web-dev-qa-db-ja.com

Microsoft Exchange Serverを介したメールの送信

さて、私はこのプログラムを持っています。このプログラムは、本質的には企業の電子メールクライアントとして機能し、彼らのために電子メールを作成して送信します。

私はその上ですべてを行いましたが、電子メールを送信しようとすると、彼らはMailbox Unavailable. Accessed Denied - Invalid HELO Nameを受け取ります

興味深いことに、私はネットワーク資格情報とfrom部分に同じユーザー名を使用しています。

編集:現在使用しているコードに更新します... Failure sending mailエラーが発生します。

これが私のMailConst.csクラスです:

public class MailConst
{

    /*
     */

    public static string Username = "username";
    public static string Password = "password";
    public const string SmtpServer = "smtp.domain.co.uk";

    public static string From = Username + "@domain.co.uk";

}

そして、これが私のメインクラスでのこれらの変数の使用です:

    public static void SendMail(string recipient, string subject, string body, string[] attachments)
    {


        SmtpClient smtpClient = new SmtpClient();
        NetworkCredential basicCredential = new NetworkCredential(MailConst.Username, MailConst.Password, MailConst.SmtpServer);
        MailMessage message = new MailMessage();
        MailAddress fromAddress = new MailAddress(MailConst.From);

        // setup up the Host, increase the timeout to 5 minutes
        smtpClient.Host = MailConst.SmtpServer;
        smtpClient.UseDefaultCredentials = false;
        smtpClient.Credentials = basicCredential;
        smtpClient.Timeout = (60 * 5 * 1000);

        message.From = fromAddress;
        message.Subject = subject + " - " + DateTime.Now.Date.ToString().Split(' ')[0];
        message.IsBodyHtml = true;
        message.Body = body.Replace("\r\n", "<br>");
        message.To.Add(recipient);

        if (attachments != null)
        {
            foreach (string attachment in attachments)
            {
                message.Attachments.Add(new Attachment(attachment));
            }
        }

        smtpClient.Send(message);
    }

ちょうど付記として。このプログラムは、自分の資格情報を使用する場合、自分のサーバーを経由する場合に機能し、自分のサーバーにリンクする場合に機能しません。

11
Zach Ross-Clyne

この問題を解決するには、DomainにオプションのパラメーターNetworkCredentialを使用する必要がありました。

私のコードは次のようになります:

NetworkCredential basicCredential = new NetworkCredential(MailConst.UserName, MailConst.Password, MailConst.Domain

どこ MailConst.Domainは、Exchangeドメインを指す文字列です。

8
Zach Ross-Clyne