我现在遇到这样一个问题,
我们的系统有这么一个需求,用户提交一份订单后,要以用户的名义给我们的Dealer发一封邮件,
同时我们的Dealer也有向用户发一封邮件,这些都是系统自动完成的,都是在客户点击“提交”后发生的。
我以前用的是匿名发邮件,也就是自己用IIS建了一个SMTP服务器,可以匿名发邮件,
我可以用任何人的身份发邮件。
但是最近有个问题,就是我们的客户有很多人用hotmail的邮箱,不知道为什么我们在给Hotmail匿名发邮件
的时候,hotmail收不到邮件,
我估计应该是我们匿名发邮件的原因,hotmail直接给过滤掉了,所以我现在要改成“非匿名”发邮件,也就是
必须输入用户名和密码,但是客户的邮箱我们是不知道,所以我们是不可能真正的以用户的身份发邮件的。
所以我想是否我可以用自己的用户和密码,用自己的邮件服务器发邮件,但是收到的邮件,显示的时候,显示的是
不是我的地址,而是用户的地址。不知道我描述清楚没有。大概的意思就是我用System.net.Mail发邮件,用一个用户名和密码发邮件,
但是我想隐藏掉真正的From(发信人)的信息,而是显示另外的email地址,
我能实现Displayname是另外的地址,但是旁边还是有我真正的发信人的地址,我有什么办法能隐藏掉他。
或者遇到这样的问题,有没有其他的解决方法。请高人指导。

解决方案 »

  1.   

    你们不能设置一个统一的邮箱用来发hotmail的邮件么?为什么要隐藏From呢?
      

  2.   

    没看懂,你是作为Dealer给用户发还是作为用户给Dealer发?是发信地址需要是**@hotmail.com么?还是收发信地址都是hotmail的? 一头雾水
      

  3.   

    From作为一个属性,是可以随便设置的,与用来发信的EMail账户无关~
      

  4.   

    [MSDN]MailMessage.From 属性  
    获取或设置此电子邮件的发信人地址。
    发件人地址未经过验证或未绑定到当前登录的用户。MailMessage.Sender 属性也一样
      

  5.   

    System.Net.Mail.SmtpClient client = new SmtpClient("smtp.163.com");
    client.UseDefaultCredentials = false;
    client.Credentials = new System.Net.NetworkCredential("[email protected]", "cwy_speed");
    client.DeliveryMethod = SmtpDeliveryMethod.Network;MailAddress addressFrom = new MailAddress("[email protected]", "张三");
    MailAddress addressTo = new MailAddress(strto, "李四");
                
    System.Net.Mail.MailMessage message = new MailMessage(addressFrom, addressTo);
    message.Sender = new MailAddress("[email protected]");
    message.BodyEncoding = System.Text.Encoding.UTF8;
    message.IsBodyHtml = true;client.Send(message);(以上代码是可以正确执行的,并且是可以发送出去的。)
    但是收到的邮件上面的发信人地址是这么写的:[email protected]; 代表; 张三[[email protected]]
    我不想让客户看到[email protected],只想让他看到[email protected].或者张三,就是不能让他看到[email protected]
      

  6.   

    晕就一个字
    我说过了,From或Sender属性是可以随便设置的,可以是假的
    你干吗还用
    message.Sender   =   new   MailAddress("[email protected]"); 
    应该是
    message.Sender   =   new   MailAddress("[email protected]"); 
    才对
      

  7.   

    From或Sender属性是可以随便设置的
    From是可以设置,但是Sender必须和你的stmpserver是一个邮箱的,必须是真实的发信人。
    不可以,
    不信,你事实,除非你用匿名发邮件的服务器。
      

  8.   

    我现在的问题就是不能用匿名发邮件,因为事情太多,总是被这个,或者那个邮箱block掉,
    所以我要用明文发邮件,就是必须要用户名和密码严重后的,
    这种情况下sender是不能随便写的,
    From是可以随便写的,
    但是当收到的邮件,发信人却是:From代表Sender发的邮件。
      

  9.   

    viena ,你可以把我的代码黏贴下来,测试,
    sender是不能随便写的。
      

  10.   

    Sender不能隨便寫,但是from可以
      

  11.   

    message.Sender = new MailAddress("[email protected]");
    这句去掉
      

  12.   

    不好意思,我还真没用过这个Sender,我都是设置From的
      

  13.   

    我的邮件不是发件人隐藏不起来,是可以隐藏起来的, 
    现在我想的是你把Sender改为From。
      

  14.   

    viena 
    按你说法,邮件是发不出去的。
      

  15.   

    看来是么有办法了,我只能是显示真实的From地址了。
      

  16.   

    本帖最后由 lxcnn 于 2010-12-01 12:55:30 编辑
      

  17.   

    你连不上smtp.163.com你看telnet smtp.163.com 25
    你能行吗?应该是网络原因。
      

  18.   

    连不上smtp.163.com ?是不是刚刚申请的163邮箱啊,记得以前做过一个发邮件的程序,刚申请的163邮箱不行,163免费邮箱目前不直接开放smtp、pop3
    参见http://help.163.com/07/0119/05/3566UNG8007525KA.html你可以用hotmail.com的邮箱.
      

  19.   

    发送邮件例子:
      public bool Send(string title, string body, string toEmail)
            {
                bool result;
                try
                {
                    MailMessage mailMessage = new MailMessage();
                    mailMessage.To.Add(toEmail);
                    mailMessage.Subject = title;
                    mailMessage.Body = body;
                    mailMessage.IsBodyHtml = true;
                    mailMessage.From = new MailAddress("×××××@yahoo.com.cn");
                    SmtpClient smtpClient = new SmtpClient();
                    smtpClient.EnableSsl = false;
                    smtpClient.Host = "smtp.mail.yahoo.com";
                    smtpClient.Port = 25;
                    smtpClient.Credentials = new NetworkCredential("帐户", "密码");
                    smtpClient.Send(mailMessage);
                    result = true;
                    
                }
                catch(Exception ex)
                {
                    result = false;
                     HttpContext.Current.Response.Write("<script language='javascript'>alert('" + ex.Message.ToString() + "!');</script>");
                }
                return result;
            }