5

メールを送信するための連絡フォームを作成しようとしています(fromユーザーtoインターフェイスから作成されます):

try {
   MailMessage mail = new MailMessage();
   SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
   mail.From = new MailAddress("fromadd");
   mail.To.Add("toadd");
   mail.Subject = "Test Mail";
   mail.Body = "This is for testing SMTP mail from GMAIL";
   SmtpServer.Port = 587;
   SmtpServer.Credentials = new System.Net.NetworkCredential("username","password");
   SmtpServer.EnableSsl = true;

   SmtpServer.Send(mail);
   MessageBox.Show("mail Send");
}
catch (Exception ex) {
   MessageBox.Show(ex.ToString());
}

これは Gmail でのみ機能しますが、どのメール プロバイダーでも機能させたいのですが、どうすればよいでしょうか?

4

6 に答える 6

2

web.configでSmtpClientを構成する必要があります。

<configuration>
  <system.net>
    <mailSettings>
      <smtp deliveryMethod="network">
        <network
          host="localhost"
          port="25"
          defaultCredentials="true"
        />
      </smtp>
    </mailSettings>
  </system.net>
</configuration>

次に、コードで次のことができます。

    try
    {
        MailMessage mail = new MailMessage();
        mail.From = new MailAddress("fromadd");
        mail.To.Add("toadd");
        mail.Subject = "Test Mail";
        mail.Body = "This is for testing SMTP mail from GMAIL";

        SmtpClient SmtpServer = new SmtpClient();            
        SmtpServer.Send(mail);
        MessageBox.Show("mail Send");
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.ToString());
    }
于 2012-10-30T15:03:28.270 に答える
1

SMTP サーバーへの接続にハードコードされたパラメーターを使用しないでください。

代わりに webconfig を使用してください。あなたのプログラムはより「一般的」になります。別の smtp-server 経由で送信する場合は、構成を変更するだけです

于 2012-10-30T14:59:34.063 に答える
1

SmtpClientweb.config で構成を設定できます。これにより、柔軟になります。

http://blog.dotnetclr.com/archive/2009/08/18/511.aspx

http://msdn.microsoft.com/en-us/library/w355a94k.aspx

于 2012-10-30T14:58:41.720 に答える
0

私には、メールサーバーを使用してメールを送信できない唯一の理由は、一部のメールサーバーが認証 (または代替ポート番号) を必要とするという事実だけのようです。

これは、正しい方向に向けるための基本的なコードの一部です。

public class SendMail
{

    public SendMail(string SMTPServer, string fromEmail)
    {
        this.SMTPServer = SMTPServer;
        this.FromEmail = fromEmail;
    }

    public SendMail(string SMTPServer, string fromEmail, string Username, string Password) : this(SMTPServer, fromEmail)
    {
        this.Username = Username;
        this.Password = Password;
    }

    public string SMTPServer { get; set; }
    public string FromEmail { get; set; }
    public string Username { get; set; }
    public string Password { get; set; }

    public void Send(string toEmail, string subject, string data)
    {
        MailMessage mailMsg = new MailMessage();
        mailMsg.To.Add(toEmail);

        MailAddress mailAddress = new MailAddress(this.FromEmail);

        mailMsg.From = mailAddress;

        mailMsg.Subject = subject;
        mailMsg.Body = data;
        mailMsg.IsBodyHtml = true;
        SmtpClient smtpClient = new SmtpClient(this.SMTPServer, 25);

        if (this.Username.Length > 0 && this.Password.Length > 0)
        {
            System.Net.NetworkCredential credentials = new System.Net.NetworkCredential(this.Username, this.Password);
            smtpClient.Credentials = credentials;
        }

        smtpClient.Send(mailMsg);
    }

}
于 2012-10-31T06:49:00.763 に答える
0

私はこのコードを試しています。

try
{
    MailMessage mail = new MailMessage();
    mail.From = new MailAddress("best@technosys.com");
    mail.To.Add("best@technosys.com");
    mail.Subject = "Accept Request";
    mail.Body = body;
    mail.IsBodyHtml = true;
    SmtpClient smtp = new SmtpClient("smtp.gmail.com");
   smtp.Credentials = new System.Net.NetworkCredential("best@technosys.com", " password");
    smtp.EnableSsl = true;
    smtp.UseDefaultCredentials = true;
    smtp.Send(mail);
}
catch (Exception ex)
{
   ViewData.ModelState.AddModelError("_FORM", ex.ToString());
}
于 2012-11-05T06:48:38.637 に答える