2013-08-05 3 views
1

мне нужно отправить электронную почту от моего Asp.net C# сайта, мы хостинг на OVH, вот что я сделал:отправить письмо с SMTP-клиентом в C#

public static void Send(string stringFrom, string stringFromPass, 
     string stringTo, string stringBody, string stringSubject, int tryNb) 
    { 
     // Command line argument must the the SMTP host. 
     SmtpClient client = new SmtpClient("smtp.mondomaine.me", 587); 
     // Specify the e-mail sender. 
     // Create a mailing address that includes a UTF8 character 
     // in the display name. 
     MailAddress from = new MailAddress(stringFrom, 
      "Sender", 
     System.Text.Encoding.UTF8); 
     // Set destinations for the e-mail message. 
     MailAddress to = new MailAddress(stringTo); 
     // Specify the message content. 
     MailMessage message = new MailMessage(from, to); 
     message.Body = stringBody; 
     message.IsBodyHtml = true; 
     message.BodyEncoding = System.Text.Encoding.UTF8; 
     message.Subject = stringSubject; 
     message.SubjectEncoding = System.Text.Encoding.UTF8; 
     //provide Authentication Details need to be passed when sending email from gmail 
     string password = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(stringFromPass)); 
     NetworkCredential mailAuthentication = new NetworkCredential(stringFrom, password); 
     client.UseDefaultCredentials = false; 
     client.Credentials = mailAuthentication; 
     // Set the method that is called back when the send operation ends. 
     client.SendCompleted += new 
     SendCompletedEventHandler(SendCompletedCallback); 
     // The userState can be any object that allows your callback 
     // method to identify this send operation. 
     // For this example, the userToken is a string constant. 
     string userState = stringFrom + "*&(k)&*" + 
      stringFromPass + "*&(k)&*" + stringTo + "*&(k)&*" + 
      stringBody + "*&(k)&*" + stringSubject + "*&(k)&*" + tryNb.ToString(); 
     client.SendAsync(message, userState); 
    } 

, а затем я звоню этот fonction когда это мне нужно. Я получаю OvH ответ сервера:

sorry, invalid MAIL FROM for open-smtp session (http://travaux.ovh.com/?do=details&id=2602) 

на этом последнем звене они сказали, что:

messages sent via open-smtp will only be accepted if the email address of the fields From/Sender is the same connection login used for POP access. 

Как вы видите, в моем коде я не использую POP и я не знаю, как. так почему это ограничение? Любая идея, как исправить это, будет значительно оценена.

+1

Там не проблема с вашим кодом, электронная почта отправка прекрасно это конфигурация почтового сервера вам нужно разобраться, это, вероятно, неправильно настроен для SMTP. – James

+0

Вы пробовали отлаживать код, также обертывающий этот код вокруг 'try {} catch {}' может привести к реальной проблеме подчеркивания – MethodMan

+0

спасибо за ваш ответ, я увижу и попробую это. –

ответ

0

проблема была вызвана mailAuthentication, теперь я использую System.Security.SecureString вместо Convert.ToBase64String для кодирования passwords и все работает хорошо.

System.Security.SecureString secureString = new System.Security.SecureString(); 
stringFromPass.ToCharArray().ToList().ForEach(p => secureString.AppendChar(p)); 
NetworkCredential mailAuthentication = new NetworkCredential(stringFrom, secureString); 

В перспективе, необходимо настроить SMTP, чтобы использовать электронную почту и пароль

0

Если вы хотите отправить бросок Gmail-Id.


В вашей электронной почте ID изменить E-mail-настройку

Выполните этот шаг

  • Нажмите 1 -> Установка

  • Нажмите 2 -> Пересылка и POP/IMAP

  • Clect 3 -> Разрешить доступ к IMAP


функция рассылки:

MailMessage message = new MailMessage(); 
message.From = new MailAddress("[email protected]"); 
message.To.Add("[email protected]"); 
message.Subject = "Your QR Code Image"; 
message.Body = "Please open this link and download this QR Code image for scanning your QRCode :" + QR_Code; 

SmtpClient client = new SmtpClient(); 
client.EnableSsl = true; 
client.Send(message); 

В WebConfig:

<system.net> 
    <mailSettings> 
     <smtp deliveryMethod="Network"> 
      <network host="smtp.gmail.com" port="587" userName="[email protected]" password="****" /> 
     </smtp> 
    </mailSettings> 
</system.net> 
Смежные вопросы