67

標準の Google Apps アカウントを持っています。Google Apps でカスタム ドメインをセットアップしました。Gmail インターフェイスを使用すると、Google Apps でメールを正常に送受信できます。ただし、コードでメールを送信したい。これを試みるために、次のコードを試しています。

MailMessage mailMessage = new MailMessage();
mailMessage.To.Add("someone@somewhere.com");
mailMessage.Subject = "Test";
mailMessage.Body = "<html><body>This is a test</body></html>";
mailMessage.IsBodyHtml = true;

// Create the credentials to login to the gmail account associated with my custom domain
string sendEmailsFrom = "emailAddress@mydomain.com";             
string sendEmailsFromPassword = "password";
NetworkCredential cred = new NetworkCredential(sendEmailsFrom, sendEmailsFromPassword);

SmtpClient mailClient = new SmtpClient("smtp.gmail.com", 587);
mailClient.EnableSsl = true;
mailClient.DeliveryMethod = SmtpDeliveryMethod.Network;
mailClient.UseDefaultCredentials = false;
mailClient.Timeout = 20000;
mailClient.Credentials = cred;
mailClient.Send(mailMessage); 

Send メソッドに到達すると、次のような例外がスローされます。

「SMTP サーバーは安全な接続を必要とするか、クライアントが認証されませんでした。サーバーの応答は次のとおりです: 5.5.1 認証が必要です。」

Google 経由でカスタム ドメイン経由でメールを送信するにはどうすればよいですか?

ありがとう!

4

5 に答える 5

93

コードですべての smtp 設定をハードコードする必要はありません。代わりに web.config に入れてください。このようにして、必要に応じてこれらの設定を暗号化し、アプリケーションを再コンパイルせずにその場で変更できます。

<configuration>
  <system.net>
    <mailSettings>
      <smtp from="example@domain.com" deliveryMethod="Network">
          <network host="smtp.gmail.com" port="587"
              userName="example@domain.com" password="password"/>
      </smtp>
    </mailSettings>
  </system.net>
</configuration>

SmtpClient で SSL を有効にするだけでメールを送信したら終了します。

var message = new MailMessage("navin@php.net");
// here is an important part:
message.From = new MailAddress("example@domain.com", "Mailer");
// it's superfluous part here since from address is defined in .config file
// in my example. But since you don't use .config file, you will need it.

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

Gmail で認証しようとしているのと同じメール アドレスからメールを送信していることを確認してください。

: .NET 4.0 以降では、コードで設定するのではなく、enableSsl="true" を web.config に挿入できます。

于 2009-04-16T20:50:52.507 に答える
8

これは私がWPF 4で使用するものです

SmtpClient client = new SmtpClient();
client.Credentials = new NetworkCredential("sender_email@domain.tld", "P@$$w0rD");
client.Port = 587;
client.Host = "smtp.gmail.com";
client.EnableSsl = true;

try 
{
    MailAddress maFrom = new MailAddress("sender_email@domain.tld", "Sender's Name", Encoding.UTF8),
    MailAddress maTo = new MailAddress("recipient_email@domain2.tld", "Recipient's Name", Encoding.UTF8);
    MailMessage mmsg = new MailMessage(maFrom, maTo);
    mmsg.Body = "<html><body><h1>Some HTML Text for Test as BODY</h1></body></html>";
    mmsg.BodyEncoding = Encoding.UTF8;
    mmsg.IsBodyHtml = true;
    mmsg.Subject = "Some Other Text as Subject";
    mmsg.SubjectEncoding = Encoding.UTF8;

    client.Send(mmsg);
    MessageBox.Show("Done");
} 
catch (Exception ex) 
{
    MessageBox.Show(ex.ToString(), ex.Message);
    //throw;
}

ファイアウォールとアンチウイルスに注意してください。これらの不気味なものは、電子メールを送信するアプリケーションをブロックする傾向があります。私は McAfee Enterprise を使用しており、電子メールを送信できるようにするには、実行可能ファイル名 (Bazar.exe と Bazar.vshost.exe の両方に Bazar.* など) を追加する必要があります...

于 2011-01-02T08:02:30.500 に答える
3

ポートを 465 に変更します

于 2009-12-12T17:04:10.493 に答える
3

何もする必要はありません。初めて現在のアカウントにログインし、指示に従ってください。

あなたの問題は解決します。Google アプリでアカウントを作成したが、ログインしなかったために発生します。ログインして指示に従って試してみてください。

于 2012-02-20T07:33:57.663 に答える
0

私のコードは Port=587 (SSL はポート 465 である必要があります) で TLS を使用して smtp.google.com に接続していますが、それでも EnableSsl=true が必要です

SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com";
smtp.Port = 587;
smtp.EnableSsl = true;
smtp.UseDefaultCredentials = false;
NetworkCredential credentials = new NetworkCredential();
credentials.UserName = "INSERT EMAIL";
credentials.Password = "INSERT PASSWORD";
smtp.Credentials = credentials;

MailAddress addressFrom = new MailAddress(credentials.UserName);
MailAddress addressTo = new MailAddress("INSERT RECIPIENT");
MailMessage msg = new MailMessage(addressFrom, addressTo);
msg.Subject = "SUBJECT"
msg.Body = "BODY";

smtp.Send(msg);

G SUITE アカウントに関するこれらの重要な前提条件に注意してください

  • 使用するユーザー名が、最初のサインイン時に表示される CAPTCHA 単語検証テストをクリアしていることを確認してください。
  • アカウントに安全なパスワードが設定されていることを確認してください - https://support.google.com/accounts/answer/32040
  • 目的のアカウントで安全性の低いアプリが有効になっていることを確認してください - https://support.google.com/a/answer/6260879
于 2017-12-16T15:54:39.330 に答える