Google Apps アカウント経由で C# 経由でメールを送信する 質問する

Google Apps アカウント経由で C# 経由でメールを送信する 質問する

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

MailMessage mailMessage = new MailMessage();
mailMessage.To.Add("[email protected]");
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 = "[email protected]";
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 経由でカスタム ドメインを通じてメールを送信するにはどうすればよいですか?

ベストアンサー1

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

<configuration>
  <system.net>
    <mailSettings>
      <smtp from="[email protected]" deliveryMethod="Network">
          <network host="smtp.gmail.com" port="587"
              userName="[email protected]" password="password"/>
      </smtp>
    </mailSettings>
  </system.net>
</configuration>

メールを送信するときには、SmtpClient で SSL を有効にするだけです。

var message = new MailMessage("[email protected]");
// here is an important part:
message.From = new MailAddress("[email protected]", "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

おすすめ記事