【问题标题】:Emailing from Gmail error on DisplayName property在 DisplayName 属性上从 Gmail 发送电子邮件错误
【发布时间】:2016-04-11 15:01:45
【问题描述】:

当我删除 MailAddress() 的 DisplayName 属性时,下面是我的代码,它工作正常,但接收端邮件在显示名称上显示 EmailID,例如 emailID@gmail.com。

MailMessage mail = new MailMessage();
    mail.From = new System.Net.Mail.MailAddress("emailID@domainName.com");
    // The important part -- configuring the SMTP client
    SmtpClient smtp = new SmtpClient();
    smtp.Port = 587;   // [1] You can try with 465 also, I always used 587 and got success
    smtp.EnableSsl = true;
    smtp.DeliveryMethod = SmtpDeliveryMethod.Network; // [2] Added this
    smtp.UseDefaultCredentials = false; // [3] Changed this
    smtp.Credentials = new NetworkCredential(mail.From.ToString(), "password");  // [4] Added this. Note, first parameter is NOT string.
    smtp.Host = "smtp.gmail.com";
    mail.IsBodyHtml = true;
    mail.Subject = Subject;
    mail.Body = Body;
    mail.To.Add(new MailAddress(To));
    smtp.Send(mail);
    mail.Dispose();

当我添加 MailAddress() 的显示名称时,我收到此错误消息。

System.Net.Mail.SmtpException:SMTP 服务器需要安全 连接或客户端未通过身份验证。服务器响应 是:5.5.1 需要身份验证。了解更多信息 System.Net.Mail.MailCommand.CheckResponse(SmtpStatusCode statusCode, 字符串响应)在 System.Net.Mail.SmtpTransport.SendMail(MailAddress 发件人,MailAddressCollection 收件人,字符串传递通知, Boolean allowUnicode、SmtpFailedRecipientException& 异常)在 System.Net.Mail.SmtpClient.Send(MailMessage message) at ***

我哪里错了?

【问题讨论】:

    标签: c# email gmail


    【解决方案1】:
    var client = new SmtpClient
        {
         Host = "smtp.googlemail.com",
         Port = 587,
         UseDefaultCredentials = false,
         DeliveryMethod = SmtpDeliveryMethod.Network,
         EnableSsl = true,
         Credentials = new NetworkCredential(SmtpUserName, SmtpUserPassword);
        };
    
    client.Send(mail);
    

    其中mailMailMessage 的一个实例

    private static SecureString _smtpPassword;
    
        public static SecureString SmtpUserPassword
        {
            get
            {
                if (_smtpPassword != null)
                    return _smtpPassword;
    
                _smtpPassword = new SecureString();
    
                foreach (var c in "your password here")
                    _smtpPassword.AppendChar(c);
    
                _smtpPassword.MakeReadOnly();
    
                return _smtpPassword;
            }
        }
    

    【讨论】:

    • 感谢您的快速回复。您在哪里提到电子邮件的显示名称?
    • 不确定我是否理解您的问题。删除是什么意思? DisplayName 是一个 GET 属性 msdn.microsoft.com/en-us/library/…
    • 当我添加这个 mail.From = new System.Net.Mail.MailAddress("emailID@domainName.com", "Name");收到上述错误信息
    • 我从错误消息中读到的原因在于身份验证。在大多数情况下,UserNam/Password 有问题。请参阅我关于设置用户密码的更新。
    猜你喜欢
    • 2022-01-21
    • 2021-10-09
    • 2015-05-06
    • 1970-01-01
    • 2020-11-09
    • 2019-09-22
    • 2011-06-28
    • 2021-09-11
    • 1970-01-01
    相关资源
    最近更新 更多