0

.net アプリケーションからメールを送信するスクリプトがあります。

私のホスティング プロバイダーは、メールの受信に遅延を生じさせたくない場合、メールの認証を要求しています (現在、遅延は送信からほぼ 1 日です)。

認証付きのメール送信スクリプトを作成しましたが、機能しません。エラーや例外は発生しませんが、メールはまだすぐには受信されません。

一方、古典的なASPで作成された同様のスクリプトは機能し、すぐにメールを受信します。

何か不足していますか?

これはaspスクリプトです(動作します):

<%
Set objEmail = CreateObject("CDO.Message")
objEmail.From = "sender@mydomain.com"
objEmail.To = "recipient@gmail.com"
objEmail.Subject = "Test Mail"
objEmail.Textbody = "Test Mail"
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "mail.mydomain.com"
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = "1"
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = "myusername"
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "mypassword"
objEmail.Configuration.Fields.Update
objEmail.Send
If Not err.number=0 Then
Response.write "ERROR: " & err.Description
err.Clear
end if
%>

これは .NET です (動作しません):

public static void SendEmail(string senderName, string senderEmail, string recipient, string comments, string subject, bool inTemplate)
{
    MailAddress from = new MailAddress(senderEmail);
    MailAddress to = new MailAddress(recipient);
    MailMessage mail = new MailMessage(from, to);
    mail.ReplyToList.Add(senderEmail);
    mail.Subject = subject;
    mail.IsBodyHtml = true;
    mail.Body = comments;

    Configuration configurationFile = WebConfigurationManager.OpenWebConfiguration(HttpContext.Current.Request.ApplicationPath);
    MailSettingsSectionGroup mailSettings = configurationFile.GetSectionGroup("system.net/mailSettings") as MailSettingsSectionGroup;
    NetworkCredential basicCredentials = new NetworkCredential(mailSettings.Smtp.Network.UserName, mailSettings.Smtp.Network.Password);

    SmtpClient smtpClient = new SmtpClient();
    smtpClient.Host = mailSettings.Smtp.Network.Host;
    smtpClient.Port = mailSettings.Smtp.Network.Port;
    smtpClient.UseDefaultCredentials = false;
    smtpClient.Credentials = basicCredentials;

    try
    {
        smtpClient.Send(mail);
    }
    catch (Exception ex)
    {
        throw ex;
    }
}

これらは私のweb.config設定です:

  <system.net>
    <mailSettings>
      <smtp>
        <network host="mail.mydomain.com" userName="myusername" password="mypassword" port="25" />
      </smtp>
    </mailSettings>
  </system.net>

web.config の設定は正しいのですが、サーバーの設定をクラスに手動で入力しても機能しません。

ありがとう

4

2 に答える 2

0

これを試して:

 MailMessage mailMsg = new MailMessage();
    mailMsg.To.Add("test@hotmail.com");
                // From
    MailAddress mailAddress = new MailAddress("you@hotmail.com");
    mailMsg.From = mailAddress;

    // Subject and Body
    mailMsg.Subject = "subject";
    mailMsg.Body = "body";

    // Init SmtpClient and send on port 587 in my case. (Usual=port25)
    SmtpClient smtpClient = new SmtpClient("mailserver", 587);
    System.Net.NetworkCredential credentials = 
       new System.Net.NetworkCredential("username", "password");
    smtpClient.Credentials = credentials;

    smtpClient.Send(mailMsg);
于 2014-08-15T07:54:29.523 に答える
0

問題はホスティング プロバイダー側​​にあることが判明しました。彼らが何をしたかはわかりませんが、最終的には機能し始めました。

于 2014-10-02T08:16:29.653 に答える