質問

次のコードがありますが、smtpホストが定義されていないという例外が表示されます。 Visual Studioからローカルマシンでこれを実行してテストしている場合、マシンから電子メールを送信するには何をする必要がありますか。 Windowsサービスをオンにする必要がありますか?

private void SendMailToAdminToApprove(string email_, string name_)
{
    MailMessage msg = new MailMessage();
    msg.From = new MailAddress("address@domain.com", "Person's Name");
    msg.To.Add(new MailAddress("a@gmail.com", "Adam"));
    msg.Subject    = "Message Subject";
    msg.Body       = "Mail body content";
    msg.IsBodyHtml = true;
    msg.Priority   = MailPriority.High;
    try
    {
        SmtpClient c = new SmtpClient();
        c.Send(msg);
    }
    catch (Exception ex)
    {
        Console.Write("T");
    }
}
役に立ちましたか?

解決

実際のSMTPサーバーを指すようにSMTPホストを設定する必要があります。 1つのオプションは、自分のマシンでSMTPサービスを実行することですが、ISPのサーバーを指すこともできます。

編集

pcampbellとSkeolanが述べたように、実際の値はapp.configに入力する必要があります。 localhostが例外かどうかはわかりません。ローカルサーバーを実行しないというオプションが必要かどうかによって異なります。

他のヒント

ここでSMTPホストを指定する必要があります:

string smtpHost = "localhost";
//or go to your config file
smtpHost = ConfigurationManager.AppSettings["MySmtpHost"].ToString();

SmtpClient c = new SmtpClient(smtpHost);

SMTPリレーを定義する必要があります:

SmtpClient c = new SmtpClient("relay.yourdomain.com");

またはリレーをローカルで実行している場合:

SmtpClient c = new SmtpClient("localhost");

このセクションを変更する必要があります:

 SmtpClient c = new SmtpClient();
 // Either specify a SMTP server above, or set c.Host
 c.Send(msg);

このメッセージの送信に使用するSMTPサーバーを指定する必要があります。 SMTPサーバーをローカルにインストールする場合、これはlocalhostになりますが、そうでない場合は、送信メールサーバーを適切に設定する必要があります。

これは、C#でメールを送信するために使用するコードです。また、必要に応じてローカルにファイルに送信するためのコードをコメントアウトしました。

        SmtpClient smtp = new SmtpClient(smtpServer, portNumber);
        // Disable SSL when saving to directory.
        smtp.EnableSsl = true;
        smtp.Credentials = new NetworkCredential(mailFrom, password);

        // Set mail to be delivered to a folder
        //smtp.PickupDirectoryLocation = @"C:\mail\Send";
        //smtp.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top