4

なしで以下のコードを実行したい

NetworkCredential nc = new Net.NetworkCredential("USERNAME", "PASSWORD"). 

Exchange ホスト (サーバー名) とポートのみを使用して

このコードのエラーが表示されます:メールボックスが利用できません。サーバーの応答: 5.7.1 クライアントには、この送信者として送信する権限がありません

protected void SendEmail(object sender, EventArgs e)
{
    SmtpClient smtpClient = new SmtpClient("ExchangeServerName",25);
    MailMessage message = new MailMessage();
    try
    {
        MailAddress fromAddress = new MailAddress("bala@OfficeName.com", "From Me");
        MailAddress toAddress = new MailAddress("bala@OfficeName.com", "To You");
        message.From = fromAddress;
        message.To.Add(toAddress);
        message.Subject = "Testing!";
        message.Body = "This is the body of a sample message";
        smtpClient.UseDefaultCredentials = true;
        System.Net.NetworkCredential nc = CredentialCache.DefaultNetworkCredentials;
        smtpClient.Credentials = (System.Net.ICredentialsByHost)nc.GetCredential("ExchangeServerName", 25, "Basic");
        smtpClient.Send(message);
        lblText.Text ="Email sent.";
    }
    catch (Exception ex)
    {
        lblText.Text = "Coudn't send the message!\n  " + ex.Message;
    }
}
4

3 に答える 3

4

私はそれをやった。私のコードの詳細については、このリンクを使用してください。

以下のコードはうまく機能しています

サーバー: Windows Server 2003、Windows Server 2008、Windows Server 2008 R2

IIS : 6.0、7.0

.Net フレーム Wotk : 2.0,3.5,4.0

string sMessage;
SmtpClient smtpClient = new SmtpClient();
MailMessage message = new MailMessage();
try
{

 //you can provide invalid from address. but to address Should be valil
MailAddress fromAddress = new MailAddress("bala@technospine.com", "BALA");

smtpClient.Host = "Exchange Server Name";
smtpClient.Port = 25;
//smtpClient.Port = 587;


smtpClient.UseDefaultCredentials = true; 

message.From = fromAddress;
message.To.Add(bala@technospine.com); //Recipent email 
message.Subject = _subject;
message.Body = _details;
message.IsBodyHtml = true;

//smtpClient.EnableSsl = true; 

smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;

smtpClient.Send(message); 

sMessage = "Email sent.";
}
catch (Exception ex)
{
sMessage = "Coudn't send the message!\n " + ex.Message;
}


lblMailStatus.Text = sMessage;
于 2012-07-26T03:16:15.037 に答える
1

Exchange を使用してメール メッセージを送信しようとしています。これを行うには、送信者 (または送信プロセス) が、ログインしているアカウントに対して、送信者として指定しているユーザーに代わって送信するためのアクセス許可を持っている必要があります。これは、Exchange で電子メール メッセージを受信して​​ルーティングするために、Exchange の SMTP メール転送エージェント (MTA) を経由するのとは異なります。したがって、SMTP を使用してこれを行う必要があることを知って正しい方向に進んでいますが、これを達成するために間違った API を使用しようとしているだけです。ユーザー認証を行わずに SMTP MTA 経由で送信するために、CDOSYS を調べたいと考えています。より具体的な例については、System.Web.Mail.MailMessage で検索してください。Exchange サーバーが、この方法で配信された SMTP メッセージを受け入れ/配信していないように見える場合は、その構成を少し開く必要があるかもしれません。その場合、Exchange サーバーはおそらく、SMTP MTA 経由で受信したメールのルーティングに関して厳重なセキュリティで構成されており、これらのメッセージの送信元のマシンの IP アドレスを設定して、メール転送を許可する必要があります。

于 2012-07-11T16:36:48.310 に答える
0

NetworkCredential nc = new Net.NetworkCredential( "USERNAME"、 "PASSWORD"、 "DOMAIN")を試してください

于 2013-02-19T16:21:12.633 に答える