- 締切済み
VB.NETでフリーメールアドレスにメール送信できない
VisualStudio2005で開発をしています。 SmtpClientクラスを使ってメールを自動送信するアプリを作成中なのですが、 社内サーバー同士でのメール送信は問題ないのですが、社外のメールサーバーのアドレスを指定した場合に、メールが送信されなくて困っています。 ○例:)yyyyyy@xxxxxx.co.jp → zzzzzz@xxxxxx.co.jp ×例:)yyyyyy@xxxxxx.co.jp → zzzzzz@zzzzz.com 調べてはみたのですが、原因を特定することができなかったので質問させていただきました。 1.googleやyahooなどのメールサーバーに対してでもメール送信できるようにしたいのですが、どの様にすればいいでしょうか? 2.上記のように書きましたが、本当はメールサーバまでは送信されていて、クライアントが受け取れていないという可能性もあるのでしょうか? 皆様のお力を借りたく思います。 どうかよろしくお願いいたします。 ↓↓↓以下、現在作成中のソースコード↓↓↓ Private Sub btn_Send_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Send.Click '送信者 Dim senderMail As String = "xxxxx@yyyyy.co.jp" ''宛先 Dim recipientMail As String = "xxxxx@yyyyy.com" '件名 Dim subject As String = "タイトル" '本文 Dim body As String = "本文1行目" + vbCrLf + vbCrLf + "本文3行目" Dim sc As New System.Net.Mail.SmtpClient() ' メールメッセージインスタンスの生成 Dim objMessage As New System.Net.Mail.MailMessage(senderMail, recipientMail, subject, body) 'SMTPサーバーを指定する sc.Host = "mail.yyyyy.co.jp" sc.Port = 25 'メールを送信する sc.Send(objMessage) End Sub
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- redfox63
- ベストアンサー率71% (1325/1856)
その社内メールサーバが 外部向けのルーティングを行わないような設定をされてはいませんか? メールサーバの管理者に問い合わせてみましょう または メールサーバから 配信不能メールが返ってきたりしていませんか? Mail-Deamon とかが送信者で 添付ファイルつきの物ですが ・・・
- redfox63
- ベストアンサー率71% (1325/1856)
メールサーバーのポートは標準設定以外なら 毎回設定する必要があると思いますよ dim sc as new SmtpClient MsgBox sc.Port を実行すると『25』が表示されると思います gmail.comなら これを dim sc as new SmtpClient sc.Port = 465 yahooなら dim sc as new SmtpClient sc.Port = 587 といった具合に指定しないとだめなような気がします
お礼
たびたび申し訳ありませんが、質問させてください。 試しにgmail経由の宛先をyahooにした場合 (質問での送信者が<xxxxxx@gmail.com>宛先が<xxxxxx@yahoo.co.jp>) にした場合、 sc.Host = "smtp.gmail.com" sc.Port = 587 sc.EnableSsl = True sc.Credentials = New System.Net.NetworkCredential("UserID", "PassWord") と指定するだけで送信する事ができました。 しかし、社内サーバーを送信者に指定した時、gmailやyahooなどにメールを送ろうとすると、送信は成功するようですがgmailやyahooの受信ボックス(迷惑メールボックスも)には受信されておりません。 何が原因なのか特定できず、困っています。 ご面倒をおかけしますが、何卒ご回答の程よろしくお願いします。
- redfox63
- ベストアンサー率71% (1325/1856)
Yahooやgoogleってメールサーバーのポートが変更されていますよ YahooBBなどで直接Yahooに接続しているなら 25でいいのですが ... googleの場合は直接続のプロバイダってあったかなぁ? 他のプロバイダ経由ですと Yahooの場合は587 googleの場合は465のはずですよ
お礼
ご回答ありがとうございます。 >他のプロバイダ経由ですと Yahooの場合は587 googleの場合は465のはずですよ これは下記のように指定する事を指しているのでしょうか? sc.Host = "smtp.gmail.co.jp" sc.Port = 587 メールを送る際には相手のメールサーバーのポートを毎回プログラムで指定してやる必要があるのでしょうか? 上記はググって調べてみたのですが、回答が得られませんでしたので再度質問させて頂きました。
お礼
>その社内メールサーバが 外部向けのルーティングを行わないような設定をされてはいませんか? 外部向けのルーティングを行わないような設定は特にしてないそうです 実際、Outlookなどのメーラーを使用するとGoogleやYahooにもメールが送信され、受信ボックスに入っています >または メールサーバから 配信不能メールが返ってきたりしていませんか? 配信不能メールも返ってきません どうにかプログラムから送れるようにならないでしょうか?