2010-12-31 1 views
1

В настоящее время я разрабатываю приложение на C# с помощью WPF.Отправка сообщения электронной почты с помощью SMTP-сервера Google Apps C#

Мне нужна программа, чтобы иметь возможность отправлять электронную почту на учетную запись электронной почты пользователей. Электронная почта должна быть отправлена ​​через мой собственный SMTP-сервер, который использует бесплатную версию Google Apps для электронной почты.

Для отправки сообщения я добавил следующий код.

try 
     { 
      SmtpClient smtpClient = new SmtpClient(); 
      smtpClient.Host = "smtp.gmail.com"; 
      smtpClient.Port = 465; 
      smtpClient.Credentials = new NetworkCredential("myusername", "mypassword"); 
      smtpClient.EnableSsl = true; 

      MailMessage message = new MailMessage(); 
      message.To.Add(getEmail()); 
      message.Subject = "Password Manager Sync Account Created"; 
      message.From = new MailAddress("[email protected]"); 
      message.Body = "My Email message" 
      smtpClient.Send(message); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show("Error Occurred" + ex.Message, "Email Failed", MessageBoxButton.OK, MessageBoxImage.Error); 

Однако, когда этот код запускает его, вместо этого просто отображается ошибка, указывающая на то, что операция была отключена.

Что может быть не так с этим. Любая помощь будет принята с благодарностью.

+0

Осторожно, Gmail имеет ограничения, используя его 'smtp' для массового рассылки по электронной почте. Также, если получатели отмечают электронные письма как спам ... – Xaqron

ответ

2

У меня есть программа, которая использует SMTP, и он идет через порт 587 на Gmail. Попробуй это.

+0

Привет, спасибо за помощь, которая отлично работала, поэтому рад, что это было простое исправление – Boardy

0

Вот код, который работает для меня (забыл, где я его нашел):

public class GmailService : IEmailService 
{ 
    private static int _port = 465; 
    private readonly string _accountName; 
    private readonly string _password; 

    public GmailService(string accountName, string password) 
    { 
     _accountName = accountName; 
     _password = password; 
    } 
    public void Send(string from, string to, string subject, string body, bool isHtml) 
    { 
     Send(from, to, subject, body, isHtml, null); 
    } 

    public void Send(string from, string to, string subject, string body, bool isHtml, string[] attachments) 
    { 
     System.Web.Mail.MailMessage mailMessage = new System.Web.Mail.MailMessage 
                 { 
                  From = from, 
                  To = to, 
                  Subject = subject, 
                  Body = body, 
                  BodyFormat = isHtml ? MailFormat.Html : MailFormat.Text 
                 }; 


     // Add attachments 
     if (attachments != null) 
     { 
      for (int i = 0; i < attachments.Length; i++) 
      { 
       mailMessage.Attachments.Add(new Attachment(attachments[i])); 
      } 
     } 

     // Authenticate 
     mailMessage.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", 1); 
     // Username for gmail - [email protected] for email for Google Apps 
     mailMessage.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", _accountName); 
     // Password for gmail account 
     mailMessage.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", _password); 
     // Google says to use 465 or 587. I don't get an answer on 587 and 465 works - YMMV 
     mailMessage.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", _port.ToString()); 
     // STARTTLS 
     mailMessage.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpusessl", true); 

     // assign outgoing gmail server 
     SmtpMail.SmtpServer = "smtp.gmail.com"; 
     SmtpMail.Send(mailMessage); 
    } 
} 

AccountName что-то вроде «[email protected]» пароль пароль для этой учетной записи.

Надеюсь, вам это поможет.

Боб

+0

BTW ... Предполагаю, что вы зарегистрировали свой сайт в Google и установили надлежащие записи MX для своего DNS-хоста. – rcravens

Смежные вопросы