1

私はフォーラムをローミングしていますが、質問に対する答えが見つかりません。すべての解決策 (および質問) は、使用に関するものMicrosoft.Office.Interop.Outlookです。何らかの理由で、使用が許可されていません office.interop

私も試しました:

MailAddress fromAddress = new MailAddress("sender@server.com");
System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();
message.From = fromAddress;
message.To.Add("receiver@theirServer.com");
message.CC.Add("receiver2@theirServer.com");
message.Subject = "theSubject";
message.Body = "TheBody";

SmtpClient smtpClient = new SmtpClient("zzz.server.xxx");
smtpClient.Credentials = new NetworkCredential("sender@server.com", "password");

smtpClient.Send(message);

パスワードをハードコーディングした後でも、コードは資格情報の認証に失敗しますが、もっと良い方法があるに違いないと感じています。

4

3 に答える 3

2

あなたの質問には多くのことが望まれます。サーバーからの応答または受け取ったエラーを投稿できますか?

ポートを指定するのに役立ついくつかの観察とフィードバックを次に示します。

SmtpClient smtpClient = new SmtpClient("zzz.server.xxx", PORTNUMBER);

基本的なプロパティのいくつかを設定します

smtpClient.Timeout = 10000;
smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
smtpClient.UseDefaultCredentials = false; //must be set prior to credentials
smtpClient.Credentials = new NetworkCredential("username", "pass");

メッセージのエンコーディングを設定する

message.SubjectEncoding = System.Text.Encoding.UTF8;
message.BodyEncoding = System.Text.Encoding.UTF8;

非同期に送信し、コールバックを使用して結果を決定します

//add callback 
smtpClient.SendCompleted += new SendCompletedEventHandler(SendCompletedCallback);

//set token
string userToken = "tokenString";

//send asynchronously
smtpCient.SendAsync(message, userToken);

public static void SendCompletedCallback(object sender, AsyncCompletedEventArgs e)
        {
            // Get the unique identifier for this asynchronous operation.
             String token = (string) e.UserState;

            if (e.Cancelled)
            {
                 //do something if it was cancelled
            }
            if (e.Error != null)
            {
               MessageBox.Show( e.Error.ToString());
            } else
            {
                MessageBox.Show("Message sent.");
            }
        }
于 2013-03-03T04:56:44.077 に答える
0

Outlook などの別のクライアントでアカウントを構成して、ユーザー名の形式を含め、資格情報を確認しましたか?

次のものが必要になる場合があります。

smtpClient.Credentials = new NetworkCredential("sender", "password");

また

smtpClient.Credentials = new NetworkCredential("DOMAIN\sender", "password");
于 2013-03-03T05:18:40.653 に答える
0

メール サーバーは Exchange Server ですか? その場合、Exchange Web サービス (EWS) を使用して電子メールを送信し、送信済みアイテム フォルダーにコピーを保存できます。簡単な例を次に示します。

Exchange メールを送信

その他のサンプル コード

于 2013-03-03T05:30:59.860 に答える