2013-09-20 7 views
1
string smtpServer = "mail.occtbangalore.org"; 
string smtpAuthentication = (string)Globals.HostSettings["SMTPAuthentication"]; 
string smtpUsername = (string)Globals.HostSettings["SMTPUsername"]; 
string smtpPassword = (string)Globals.HostSettings["SMTPPassword"]; 

MailMessage mail = new MailMessage(); 

mail.From = new MailAddress("[email protected]); 
mail.To.Add(txtEmail.Text.Trim()); 
mail.Subject = "OCCT BANGALORE"; 
string html = "<img src=\"cid:Logo\" />"; 
AlternateView av2 = AlternateView.CreateAlternateViewFromString(html,null,text/html"); 
string logoFile = MapPath(PortalSettings.HomeDirectory + PortalSettings.LogoFile); 
if (File.Exists(logoFile)) 
{ 
    LinkedResource linkedResource = new LinkedResource(logoFile); 
    linkedResource.ContentId = "Logo"; 
    linkedResource.ContentType.Name = logoFile; 
    linkedResource.ContentType.MediaType = "image/jpeg"; 
    av2.LinkedResources.Add(linkedResource); 
} 
mail.AlternateViews.Add(av2); 
SmtpClient emailClient = new SmtpClient(smtpServer); 
if (smtpAuthentication == "1") 
{ 
    NetworkCredential SMTPUserInfo = new NetworkCredential(smtpUsername,smtpPassword);  
    emailClient.UseDefaultCredentials = false; 
    emailClient.Credentials = SMTPUserInfo; 
} 
emailClient.Send(mail); 

Когда я запускаю этот код, я получаю эту ошибку:Как отправить электронную почту с помощью dotnetnuke?

The SMTP server requires a secure connection or the client was not authenticated. The server response was: SMTP authentication is required.

Где я не так?

ответ

1

Я вижу, что вы используете тег dotnetnuke. Почему вы не используете dotnetnuke.service.mail?

Это сборка dontnetuke для отправки почты.

На вкладке «Настройки хоста» «Дополнительные настройки» вы можете добавить сервер SMTP, который вы хотите использовать.

Тогда это легко просто использовать то есть следующий класс:

SendEmail(string fromAddress, string senderAddress, string toAddress, string subject, string body, List<System.Net.Mail.Attachment> attachments); 
0

Попробуйте установить EnableSSL к TRU и номер порта, как показано ниже.

SmtpClient emailClient = new SmtpClient(smtpServer); 
emailClient.EnableSsl = true; 
emailClient.Port = 587 
if (smtpAuthentication == "1") 
{ 
     NetworkCredential SMTPUserInfo = new NetworkCredential(smtpUsername, smtpPassword); 
     emailClient.UseDefaultCredentials = false; 
     emailClient.Credentials = SMTPUserInfo; 
} 
emailClient.Send(mail); 

Если это не работает здесь полностью функциональный пример, который я использовал много раз

private static void SendEmail(string to, string cc, string bcc, string subject, string body, bool isHtml) 
{ 
    SmtpClient mailClient = new SmtpClient(Config.SmptSettings.Server); 
    mailClient.Credentials = new NetworkCredential(Config.SmptSettings.UserName, Config.SmptSettings.Password); 
    mailClient.Port = Config.SmptSettings.Port;     

    MailMessage message = new MailMessage(); 
    message.From = new MailAddress(Config.SUPPORT_EMAIL, Config.SUPPORT_EMAIL_NAME); 

    message.To.Add(new MailAddress(to)); 

    if (!string.IsNullOrEmpty(cc)) 
    { 
     message.CC.Add(cc); 
    } 

    if (!string.IsNullOrEmpty(bcc)) 
    { 
     message.Bcc.Add(bcc); 
    } 

    message.Subject = subject; 
    message.Body = body; 
    message.IsBodyHtml = isHtml; 

    mailClient.EnableSsl = Config.SmptSettings.SSL; 
    mailClient.Send(message); 
} 
Смежные вопросы