6


3

これは私が書いたコードです:

MailMessage mail = new MailMessage( "[email protected]"、 "[email protected]");

mail.Subject = "これはテストです!!"; mail.Body = "testing ...";

SmtpPermission connectAccess = new SmtpPermission(SmtpAccess.Connect); System.Console.WriteLine( "アクセス? "connectAccess.Access);

SmtpClientクライアント=新しいSmtpClient( "mail.myurl.com"、2525); client.Send(メール)。

動いていない。 "client.Send(mail)"という行に "Mailbox unavailable。"という例外が表示されます。 サーバーの応答は(MYLOCALCOMPUTERNAME)[MY LOCAL IP]でした:3045は現在中継を許可されていません。 "

connectAccess.Accessは "Connect"を返します(これが必要かどうかはわかりませんが…​ トラブルシューティングプロセスを開始するために追加しました。)

これは私のローカルマシンが何らかの方法で設定されなければならないことを意味しますか? 自分のアプリを他の人のマシンにデプロイするとどうなりますか? そこにローカル設定が必要ですか? 私は自分のアプリケーションから "Send Feedback"タイプのリンクを作成しようとしています。

(注:私の実際のアプリケーションでは、 "to"と "from"の両方で実際の電子メールアドレスを使用しています。私のsmtpは、実際に私のURL / Webサイトをホストする場所の私のsmtpアドレスです)

ありがとう

  • アデナ

4 Answer


7


@マイケル:リンクをありがとう。 とても助かります。

私は自分の問題を考え出した。 「クライアント」オブジェクトを作成した後に、ログイン認証情報を追加する必要はありませんでした。 次の行を追加しました。

client.Credentials = new System.Net.NetworkCredential( "myloginat myurl.com"、 "mypassword");

(すみません - 私は私が2時間のために私のマニュアルを通して私とウェブ上で答えを捜した後、私は最終的に分解して質問を投稿し、それから5分後にそれを理解するという習慣を持っています。 :)質問を書き留めることは、他の何よりも私に役立つと思います)

それでそれは働いています…​ 私は、それがどのようにそしてなぜそれが機能するのかについてすべてを理解していると主張するつもりはないので、私が私のプログラムを他の人に使うために与えるとき、私はいくつかの問題に出くわすと思う。 つまり、インターネットに接続しているプログラムを使用している人全員が、このSMTP接続を自分のサーバーに開くことができるのでしょうか。 答えがわかりません… 待って、見て、そしてもっと学ぶ必要があります。

ありがとうございます。 :)

  • アデナ


3


宛先アドレスはSMTPサーバーと同じホストにありますか? そうでなければ、これは中継エラーを説明するでしょう。

使用するSMTPサーバーは、メールメッセージの最終送信先またはメール交換の最初のホップである必要があります。 たとえば、gmailアドレスからyahooアドレスにメールを送信している場合、メッセージを表示する最初のメールサーバーはgmailサーバー、またはyahooサーバーでなければなりません。 間にあるサーバーは、リレーを無効にしているため(スパムを削減するためなど)、メッセージを拒否します。

同じホストであれば、他の方法で直接メールを送信できますか?

あなたのsmtpサーバが正しく振舞っているかどうか確かめるためにtelnetを通してこのテストを試みなさい:http://www.messagingtalk.org/content/470.html


0


ファイアウォールを確認してください。 2525ポストは開いていますか?


0


システムを使用する。 System.Collections.Genericを使用します。 System.ComponentModelを使用します。 System.Dataを使用します。 System.Drawingを使用します。 System.Linqを使用します。 System.Textを使用します。 System.Windows.Formsを使用します。 System.Netを使用する。 System.Net.Mailを使用します。

名前空間SendMail {パブリック部分クラスForm1:フォーム{public Form1(){InitializeComponent(); }

private void button1_Click(object sender、EventArgs e){{SmtpClientクライアント= new SmtpClient( "smtp.gmail.com"、25); MailMessage msg = new MailMessage();

NetworkCredential cred = new NetworkCredential( "[email protected]"、 "password"); msg.From = new MailAddress( "[email protected]"); msg.To.Add( "[email protected]"); msg.Subject = "件名"; msg.Body = "こんにちは、ラフィ";

client.Credentials = cred; client.EnableSsl = true; label1.Text = "メールが正常に送信されました"; client.Send(msg);

catch {label1.Text = "エラー"; }}


}}