• 締切済み

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

みんなの回答

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.3

その社内メールサーバが 外部向けのルーティングを行わないような設定をされてはいませんか? メールサーバの管理者に問い合わせてみましょう または メールサーバから 配信不能メールが返ってきたりしていませんか? Mail-Deamon とかが送信者で 添付ファイルつきの物ですが ・・・

pitomato
質問者

お礼

>その社内メールサーバが 外部向けのルーティングを行わないような設定をされてはいませんか? 外部向けのルーティングを行わないような設定は特にしてないそうです 実際、Outlookなどのメーラーを使用するとGoogleやYahooにもメールが送信され、受信ボックスに入っています >または メールサーバから 配信不能メールが返ってきたりしていませんか? 配信不能メールも返ってきません どうにかプログラムから送れるようにならないでしょうか?

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

メールサーバーのポートは標準設定以外なら 毎回設定する必要があると思いますよ 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 といった具合に指定しないとだめなような気がします

pitomato
質問者

お礼

たびたび申し訳ありませんが、質問させてください。 試しに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)
回答No.1

Yahooやgoogleってメールサーバーのポートが変更されていますよ YahooBBなどで直接Yahooに接続しているなら 25でいいのですが ... googleの場合は直接続のプロバイダってあったかなぁ? 他のプロバイダ経由ですと Yahooの場合は587 googleの場合は465のはずですよ

pitomato
質問者

お礼

ご回答ありがとうございます。 >他のプロバイダ経由ですと Yahooの場合は587 googleの場合は465のはずですよ これは下記のように指定する事を指しているのでしょうか? sc.Host = "smtp.gmail.co.jp" sc.Port = 587 メールを送る際には相手のメールサーバーのポートを毎回プログラムで指定してやる必要があるのでしょうか? 上記はググって調べてみたのですが、回答が得られませんでしたので再度質問させて頂きました。

関連するQ&A

  • VB.net 2008 でメールを送信するには。

    初めて質問します。 VB.net初心者です。 使用環境はVisual Studio2008でVB.netを使いフォームを作成し、その中にメール送付という ボタンを作り、それに下記のプログラムを書きました。 Private Sub Button10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button10.Click Dim senderMail As String = "katsumi@aaa.bz"<--変更しています。 '宛先 Dim recipientMail As String = "katsumi@aaa.bz" '件名 Dim subject As String = "こんにちは" '本文 Dim body As String = "こんにちは。" Dim sc As New System.Net.Mail.SmtpClient() 'SMTPサーバーを指定する sc.Host = "smtp.aaa.bz" 'メールを送信する sc.Send(senderMail, recipientMail, subject, body) <---ここで止まる End Sub デバックを押すとホームまでは立ち上がります。 Button10をクリックすると sc.Send(senderMail, recipientMail, subject, body) の所で SmtpExceptionはハンドルされませんでした。 メールは送信されませんでした。 として黄色のバックカラーになります。 原因が判りません。 参照設定などに問題があるのでしょうか。 ご存知の方教えてください。

  • VB.NETからGmail経由でメールを送信について

    VB.NETからGmail経由でメールを送信について いつも大変お世話になっています。 VB.NETからGmail経由でメールを送信についてご教授願います。 Dim mailMessage As New System.Net.Mail.MailMessage _ ([送信元アドレス], [送信先アドレス], "題名", "本文") Dim smtpClient As New System.Net.Mail.SmtpClient _ ("smtp.gmail.com") smtpClient.Credentials = New System.Net.NetworkCredential _ ([送信元アドレス], "パスワード") ' << ※1 'smtpClient.EnableSsl = True ’<< ※2 smtpClient.Port = 587 smtpClient.Timeout = 10000 smtpClient.Send(mailMessage) <問題> 「送信できませんでした」とのエラーメッセージが表示。 <所感> ※1で[送信元アドレス]を設定しているのが原因?? ※2[True]/[False]を変更しても送信できませんでした。

  • VB2005でメール送信するには

    http://www.microsoft.com/japan/msdn/vbasic/migration/tips/netmail/ を参考に Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Try Dim message As New System.Net.Mail.MailMessage("from@yahoo.co.jp", "to@yahoo.co.jp") message.Subject = "件名" message.Body = "本文" Dim client As New System.Net.Mail.SmtpClient("smtp.mail.yahoo.co.jp", "587") client.Send(message) MessageBox.Show("メールを送信しました。", "送信終了") Catch ex As Exception MessageBox.Show(ex.Message, "エラー") End Try End Sub 実行すると SMTPサーバにセキュリティで保護された接続が必要であるか、またはクライアントが認証されていません。サーバの応答:Sorry,please use SMTP-AUTH instead と表示されます。 ユーザ認証の client.Credentials = New System.Net.NetworkCredential("from-userName", "from-Password") を client.Send(message) の前に追加しても同じ結果でした。 どのようにすれば送信できるか教えてください。

  • メールの送信について

    現在、VBAを学習中なのですがメールの送信がどうしてもできません。 以下にコードを記述しますので、間違えている点などありましたら、ご指摘ください。 よろしくお願いいたします。 Imports System.Net.Mail Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim mailMessage As New System.Net.Mail.MailMessage("usename@gmail.com", "usename@hotmail.co.jp", "Subject", "Body") Dim smtpClient As New System.Net.Mail.SmtpClient("smtp.gmail.com") smtpClient.Credentials = New System.Net.NetworkCredential("usename@gmail.com", "pass") smtpClient.EnableSsl = False smtpClient.Port = 587 Try ' 送信する smtpClient.Send(mailMessage) MessageBox.Show("送信しました") Catch ex As SmtpException ' SMTPサーバーへの接続に失敗した場合 MessageBox.Show(ex.Message) End Try End Sub End Class

  • C#でメール送信

    C#の System.Text.Encoding enc = System.Text.Encoding.GetEncoding(50220); System.Net.Mail.SmtpClient sc = new System.Net.Mail.SmtpClient(); //SMTPサーバーを指定する sc.Host = "localhost"; //メッセージを送信する sc.Send(msg); で送信したメールと メーラー(Becky)で送信したメールでは Subjectなどの変換後の文字コードが全く違うものとなっており、 そのためか、文字化けしてしまいます。 メーラーと同じような変換で文字化けせずにメールを送信するには、 どのようにしたらいいのでしょうか?

  • vb2005のメール送信について

    定期的にメール送信するプログラムがあります、 05/15 4:00までは正常にメール送信していたのですが、 突然メールが送信されなくなりました。 原因を調査したところ 以下ソースの Client.Send(Message) にてエラーが発生している事がわかり、 エラー内容は 「System.Net.Mail.SmtpException:SMTPサーバーに  セキュリティで保護された接続が必要であるか、  またはクライアントが認証されていません。  サーバーの応答:5.5.1 Authentication Required.Learn More at」です。 デバッグにてユーザーIDとパスワードが入っている事を確認し、 WebのGmailにユーザーIDとパスワードにてログイン可能であることも確認しました、 どなたか解決方法をご教授願えませんか? 以下ソースの一部です。 ******************************************************************** ******************************************************************** '********************************************** 'クライアントサーバーを設定・実体作成 Dim Client As New SmtpClient(MailSmtpClient) 'ポート使用する。 Client.Port = 587 Client.EnableSsl = True Client.Timeout = 100000 'クライアント情報(送信元のユーザーIDとパスワードをセット) Client.Credentials = New Net.NetworkCredential(MailUserID, _ MailPassWord) Try 'メール送信 Client.Send(Message) Catch ex As Exception MsgBox(ex.ToString) End Try ********************************************************************** **********************************************************************

  • VB2005で作ったメール送信プログラムで、メール本文が文字化けしてしまいます。

    VB2005でメール送信プログラムを作ったのですが、送信したBODYが文字化けしてしまいます。どう修正すればよいか、教えてください。 以下がそのコードです。 Imports System.Net.mail Public Class Form1 Private Sub ToolStripButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton1.Click Dim tc As Sockets.TcpClient Dim ns As Sockets.NetworkStream Dim stat As String Dim mailData As String Dim mailFrom As String = "", mailSubject As String = "", mailBody As String = "" Dim r As Regex Dim m As Match Dim mailCount As Integer Try tc = New Sockets.TcpClient() tc.Connect(txtPOP3Server.Text, 110) ns = tc.GetStream Dim buff(tc.ReceiveBufferSize) As Byte ns.Read(buff, 0, tc.ReceiveBufferSize) POP3Transmit(ns, "USER " & txtUserName.Text, False) POP3Transmit(ns, "PASS " & txtPassword.Text, False) stat = POP3Transmit(ns, "STAT", False) r = New Regex("\+OK (.*) (.*)") m = r.Match(stat) mailCount = Val(m.Groups(1).Value) If mailCount = 0 Then MsgBox("メールはありません") Else mailData = POP3Transmit(ns, "RETR " & mailCount, True) ParseMail(mailData, mailFrom, mailSubject, mailBody) txtBody.Text = mailBody txtFrom.Text = mailFrom txtSubject.Text = mailSubject End If Dim smtpClt As New Net.Mail.SmtpClient("smtp.mail.yahoo.co.jp", 25) Dim from As String = "****@yahoo.co.jp" Dim toYou As String = DataGridView1(1, 0).Value Dim subject As String = TextBox2.Text Dim body As String = TextBox1.Text Try smtpClt.Send(from, toYou, subject, body) Timer2.Enabled = True ToolStripStatusLabel2.Text = "送信しました。" Catch ex As Exception MessageBox.Show(ex.Message) End Try POP3Transmit(ns, "QUIT", False) ns.Close() tc.Close() Catch ex As Exception MsgBox("メールの受信に失敗しました") End Try End Sub End Class

  • OCNとGmailの送信サーバー???

    従来わたしはOCNの有料メールを使用しています そのOCNメールサーバーを使いC#の送信プログラムを作って利用しています 概略は以下の通りです // SMTPサーバーを指定する SmtpClient client = new SmtpClient("smtp.vccube.ocn.ne.jp"); ・・・(1) //送信元、あて先、件名、本文を設定する string fromAddress = "MyOCNaddress@cube.ocn.ne.jp"; ・・・・・・(2) string toAddress = "MyAddress@MyCompany.com"; string subject = "題名"; string body = "内容"; //送信する client.Send(fromAddress, toAddress, subject, body); 今回Gmailの無料メールアドレスを取得し上記のプログラムを修正致しました (1)をGmailの送信サーバー SmtpClient client = new SmtpClient("smtp.gmail.com"); (2)を私が取得したGmailのメールアドレス string fromAddress = "MyGmailAddress@gmail.com"; として実行すると『送信できませんでした』とのダイアログが表示されます GmailはOCNの送信サーバーの代わりになってくれないのでしょうか? なおC#が表示したエラーは以下の通りです System.Net.Mail.SmtpException' の初回例外が System.dll で発生しました。 プログラム '[4596] net397.vshost.exe: マネージ (v2.0.50727)' はコード 0 (0x0) で終了しました。

  • C#のメール送信時のエラーについて

    こんにちは、今現在C#でメールの送信部分を作っているのですがどうしても送信途中でエラーがでてとまってしまいます。 一応、当方で確認したところによると文字コードに関するエラーが出ず、ただただ「送信ができませんでした」とハンドラで表示されます。 どのようにしたらよいでしょうか? どなたかご教授お願いします。 メールソフトのソースプログラム private void seButton_Click(object sender, EventArgs e) { //JISコード System.Text.Encoding enc = System.Text.Encoding.GetEncoding(50220); //MailMessageの作成 System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage(); //件名と本文の文字コードを指定する msg.SubjectEncoding = enc; msg.BodyEncoding = enc; //メールの送信元のアドレス msg.From = new System.Net.Mail.MailAddress("niihama-kosen@test.ac.jp"); //メールの送信先のアドレス msg.To.Add(new System.Net.Mail.MailAddress(adressBox.Text)); //メールの件名 msg.Subject = "coBox.Text"; //メールの本文 msg.Body = "hoBox.Text"; //SMTPサーバの設定 System.Net.Mail.SmtpClient sc = new System.Net.Mail.SmtpClient(); //SMTPサーバの指定 sc.Host = "smtpBox.Text"; //メールの送信 sc.Send(msg); //msgの破棄 msg.Dispose(); }

  • メールの送信エラーです。

    Outlook Express 6を使っていて、 友人にメールを送信しようとしたら、 以下のエラーメッセージが表示されました。 受信者の 1 人がサーバーによって拒否されたため、メッセージを送信できませんでした。 拒否された電子メール アドレス :XXXXXX 件名 'ごめん。ちょっと教えて~。', アカウント : 'YYYYYY', サーバー : 'YYYYYY, プロトコル : SMTP, サーバーの応答 : '553 sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1)', ポート : 25, セキュリティ (SSL): なし, サーバー エラー : 553, エラー番号 : 0x800CCC79 XXXXXの部分には、友人のメールアドレスです。 YYYYYの部分には、私のアカウントが表示されています。 この友人には、以前にも、送受信を行っていて、 その際は、何の問題もありませんでした。 他の友人への送信、受信は問題ないのですが、 何度やってみても、これだけ送信できません。 解決方法がありましたら、教えて下さい。

専門家に質問してみよう