標準の 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