none
关于 email RRS feed

  • 问题

  •  

    Message.From

    Message.Sender 

    Message.ReplyTo

    这三个的区别 应该是 有一个是实际的地址 有一个是 发送者.  那为啥是三个呢?

    我看 一些论坛有发email功能 并不需要填写密码

    那么肯明显是  利用论坛提供的某个email 地址作为 发信的实际地址. 而使用用户注册的 email 作为 发送者的地址 或者回复地址

     

    那么 我 看字面意思  replyTo 肯定不是实际的发送地址  那么 from 和sender 到底哪个是 实际发送地址呢?  如果其中一个是. 那么另外一个又是作为什么 东东而存在的呢?

    2008年11月5日 19:39

答案

  • 我建议你用Reflector看看有关类的具体实现。

    SMTP发信,理论上可以Sender和From不同。例如你可以连上a.com,然后发一封邮件,说from是me@b.com,to是you@c.com。只要a.com的SMTP规则允许,或者我们就假设它是没有任何规则的,完全开放SMTP的所有功能,也没有身份验证,那么a.com会尝试帮你把信发送给c.com。我的理解是,Sender就是fake@a.com,From就是me@b.com,最终发信的效果就如同上面所说。

    不过需要注意的是,现实中的SMTP都不允许你这样发信,至少默认规则不允许这样发信。要么对于a.com来说,要么From是a.com,它帮你把信转发到To的服务器;要么To是a.com,它负责收信。

    但在企业内部可能有relay,就会配置为允许转信。例如说a.com是b.com的子公司,a.com的SMTP服务器不能访问Internet,只有b.com的SMTP服务器允许访问Internet。那么我们可以配置b.com负责a.com的relay,配置a.com把要发的信都直接扔给b.com,这时候对于b.com来说,Sender和From就不同了。
    2008年11月15日 8:49
    版主
  • 差点忘了你的ReplyTo问题。这是用来标记邮件应该回复到哪个地址的。例如你发信给客服,发到service@a.com,然后我是客服,这封信分派到我负责,我就用myname@a.com来回复你了。但如果你仍然有问题,应该再把信发回service@a.com,然后系统会再分派客服负责你的新问题,这时候我从myname@a.com发给你的信就会有ReplyTo="service@a.com"。如果你用的邮件客户端是遵守标准的,你在点击回复是它应该回复到service@a.com。
    2008年11月15日 8:52
    版主

全部回复

  •  

    在.NET里面发邮件的消息类是MailMessage 吧,MailMessage 并没有ReplyTo属性哦。不知道你的Message是不是自己包装的,还是第三方的组件
    2008年11月6日 1:22
    版主
  • MailMessage.ReplyTo 属性 

    使用 ReplyTo 属性以指定除 From 地址以外的地址来回复此邮件。

    2008年11月6日 1:34
    版主
  • 邮件系统里面有个“答复”和“全部答复
    答复”是给发送者回信
    “全部答复”是包括给抄送里面的其他人也回复
    2008年11月6日 1:38
    版主
  • 意思是Form地址是第一次发送邮件的地址,当回复这封邮件的时候,可以把邮件发送ReplyTo属性指定的邮件地址

    2008年11月6日 1:38
    版主
  •  

    其实 我是想知道 from 和sender 的区别...

    我试验了下  把 from 设置为 真正发email的地址 而sender 随便设置了一个  也正常发出去了

     

    本来我以为 那么sender  应该是 收件列表里 发件人的 名字 . 

    不过很可惜.  发件人部分是   name@hotmail.com  的 name部分 而不是我设置的sender 部分

    比如

    from="123@123com"; // 这个是真正发邮件的地址

    sender="abc@abc.com";

    ReplyTo="abc@abc.com";

    那么最终 邮件 正常发送了. 但是发件人部分 显示的是 123  而不是我预想的 abc 或abc@abc.com

    而点回复则很顺利 会显示abc@abc.com

    而我真正想要的效果 就是和那些论坛一样的. 就是 实际是用123@123.com 发邮件  而  收到信后  收件人 会显示abc

    请问如何实现? 

     

     

    2008年11月6日 7:21
  • MailAddress from = new MailAddress("abc@abc.com", "abc");
    MailAddress to = new MailAddress("abc@abc.com", "显示的名称");
    2008年11月6日 7:38
    版主
  • 属性的定义参考
    http://msdn.microsoft.com/zh-cn/library/system.net.mail.mailmessage_properties(VS.80).aspx


    2008年11月6日 7:42
    版主
  • 孟老师您看

     

    Sender 获取或设置此电子邮件的发件人地址。

     

    From

    获取或设置此电子邮件的发信人地址。

     

    发件人 和发信人 到底啥区别?

    我只知道 如果我只设置from 就可以正常发送邮件了.而不需要设置sender.

    2008年11月6日 7:51
  •  

    这个好像不怎么好讲,我用一个例子来说明:

     

    Code Snippet
    System.Net.Mail.SmtpClient   client   =   new   SmtpClient("smtp.xxx.com");
    client.UseDefaultCredentials   =   false;
    client.Credentials   =   new   System.Net.NetworkCredential("sender@xxx.com",   "cwy_speed");
    client.DeliveryMethod   =   SmtpDeliveryMethod.Network;
    MailAddress   addressFrom   =   new   MailAddress("zs@xxx.com",   "张三");
    MailAddress   addressTo   =   new   MailAddress("ls@xxx.com",   "李四");
                          
    System.Net.Mail.MailMessage   message   =   new   MailMessage(addressFrom,   addressTo);
    message.Sender   =   new   MailAddress("sender@xxx.com");
    message.BodyEncoding   =   System.Text.Encoding.UTF8;
    message.IsBodyHtml   =   true;
    client.Send(message);

     

     


    收到的邮件上面的发信人地址是这么写的:sender@xxx.com 代表  张三zs@xxx.com
     
    (代码没调试,网上找的一段可能有些问题,只是为了能说明这问题)
     
    一般情况下sender和from是相同的,所以没人去用sender.
     
     
    2008年11月15日 3:15
    版主
  • 我建议你用Reflector看看有关类的具体实现。

    SMTP发信,理论上可以Sender和From不同。例如你可以连上a.com,然后发一封邮件,说from是me@b.com,to是you@c.com。只要a.com的SMTP规则允许,或者我们就假设它是没有任何规则的,完全开放SMTP的所有功能,也没有身份验证,那么a.com会尝试帮你把信发送给c.com。我的理解是,Sender就是fake@a.com,From就是me@b.com,最终发信的效果就如同上面所说。

    不过需要注意的是,现实中的SMTP都不允许你这样发信,至少默认规则不允许这样发信。要么对于a.com来说,要么From是a.com,它帮你把信转发到To的服务器;要么To是a.com,它负责收信。

    但在企业内部可能有relay,就会配置为允许转信。例如说a.com是b.com的子公司,a.com的SMTP服务器不能访问Internet,只有b.com的SMTP服务器允许访问Internet。那么我们可以配置b.com负责a.com的relay,配置a.com把要发的信都直接扔给b.com,这时候对于b.com来说,Sender和From就不同了。
    2008年11月15日 8:49
    版主
  • 差点忘了你的ReplyTo问题。这是用来标记邮件应该回复到哪个地址的。例如你发信给客服,发到service@a.com,然后我是客服,这封信分派到我负责,我就用myname@a.com来回复你了。但如果你仍然有问题,应该再把信发回service@a.com,然后系统会再分派客服负责你的新问题,这时候我从myname@a.com发给你的信就会有ReplyTo="service@a.com"。如果你用的邮件客户端是遵守标准的,你在点击回复是它应该回复到service@a.com。
    2008年11月15日 8:52
    版主
  •  

    感谢楼上的 回复...  发现自己好几个帖子问完了以后  自己解决了 就没再到论坛看看

    好不地道!!

     

    感谢楼上的解答. 很详细!

    2009年1月17日 17:50