• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VB.net 2008 でメールを送信するには。)

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

このQ&Aのポイント
  • VB.net 2008でメールを送信する方法について質問します。
  • Visual Studio2008のVB.netを使用してフォームを作成し、メール送信ボタンを作成しました。
  • しかし、メール送信のプログラムの一部でエラーが発生し、メールが送信されません。原因を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • Siegrune
  • ベストアンサー率35% (316/895)
回答No.3

#2ですが。 Dim argSmtpAuth As Boolean = True '多分ありだと思いますが書き方が判りません ありなら、これでいいはずです。 ## これはあまり気にしたことないのですいませんけど、私のほうでははっきりわかりません。 'argPriority As System.Net.Mail.MailPriority 優先度はどこを見ればいいのでしょうかメーラーはLiveメールです。 優先度は、設定すると、受け取った人のメーラーで、メール毎に重要度が高とか低とかでてきます。 Liveメールは使っていないのでわかりませんけど、Outlookとかなら、メールのオプションで、 重要度というのがあって、高/標準/低とか設定する項目に対応します。 前に参照してくださいとしたURLでは、 --ここから '優先度 ' 高い:System.Net.Mail.MailPriority.High ' 普通:System.Net.Mail.MailPriority.Normal ' 低い:System.Net.Mail.MailPriority.Low --ここまで をそれぞれ代入すればいいということが示されています。 '1.---> 'argIsHtml As Boolean = text 'textなんですがどう書いたらいいのでしょうか。 送信するメールがHTML形式かどうかを示します。 HTML形式・・・True Text形式・・・False '2.---> 'argFile() As System.IO.FileInfo 'ありませんがどう書いたらいいのでしょうか。 添付ファイルがあるときだけ使います。 '例えば  'argFile("c:\test.xls") As System.IO.FileInfo という感じでいいのでしょうか。 これは、ダメ。 ## 私はargFile()ではあまり指定しないのでargFile()の扱い方はちょっと不確かなので ## とりあえず、1個のファイルを指定する方法を書いておきます。 dim argFile As new System.IO.FileInfo ("c:\test.xls") として指定して、 mail.Attachments.Add(New System.Net.Mail.Attachment(argFile.FullName)) を実行すれば添付できると思います。(試してはいませんが。) 前に参照してくださいとしたURLでは、 --ここから '添付ファイル If Not (argFile Is Nothing) Then For Each f As FileInfo In argFile mail.Attachments.Add( _ New System.Net.Mail.Attachment(f.FullName)) Next End If --ここまで のように書かれている部分が対応します。 こちらは、argFile()の中にDirectoryInfo等を使って、 フォルダ内のファイルを全部一度にargFile()へ入れて、 入れたファイルを全部一度に添付するような方式にしているようです。 詳細は、System.IO.FileInfo や System.IO.DirectoryInfoのほうで調べてみてください。 (VB.Netにおけるファイルやフォルダの扱い方になります。) ・・・調べておくと役に立つ情報です。

10071007
質問者

お礼

Siegruneさん ありがとうございます。 Dim argSmtpAuth As Boolean = True Dim argIsHtml As Boolean = False Dim argFile As new System.IO.FileInfo ("C:\test.xls") mail.Attachments.Add(New System.Net.Mail.Attachment(f.FullName)) で全部通りました。 今回は1つの添付Fでやりました。 ありがとうございました。 又、お願いいたします

その他の回答 (2)

  • Siegrune
  • ベストアンサー率35% (316/895)
回答No.2

## basp21はvb6やexcel vba、vbscript等ではよく使いますが、.netでは??? サンプルののっているサイト例 http://zebratch.blog.so-net.ne.jp/archive/200812-1 sc.Send(senderMail, recipientMail, subject, body) でエラーになっていますが、 sc.Host = "smtp.aaa.bz" や設定していないポート番号、あるいはSNMPの認証情報・・・に問題があっても、 ここでエラーになります。 ・・・はっきりいって、この辺は、メールサーバに依存した情報を指定する必要がありますので、 そちらの情報をもらわないとソースがあっているかどうかさえわかりません。 (メールソフトの設定を見ながら記述するのが賢明と思います。) とりあえず、サンプルみながら全部設定してみられては? ## 初心者向けには難易度が高すぎのような気も・・・

10071007
質問者

お礼

Siegruneさん ありがとうございます。 サンプルののっているサイト見たんですが・・・ むずかしそうですね。 少し時間をください。 まずはお礼まで。

10071007
質問者

補足

お礼をどうして送ったら良いのか判りませんでしたので、こちらに書きます。 下記の書き方で一応できました。 ありがとうございます。 ただ一部に判らないことがあって教えていただければお願いします。 '1.---> '2.---> の所です。 Private Sub SendMail( _ Private Sub Button10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button10.Click Dim argSmtpServer As String = "smtp.tec.bz" '受信pop3 Dim argPortNo As Integer = 587 '送信メールsmtp Dim argSmtpAuth As Boolean = True '多分ありだと思いますが書き方が判りません Dim argUserName As String = "chikaraishi_katsumi@tec.bz" Dim argPassword As String = "chikakatsu" 'Dim argEnableSsl As Boolean = Fulse 'SSLは無しにしています。 Dim argTimeout As Integer = 100000 Dim argFrom As String = "chikaraishi_katsumi@tec.bz" Dim argTo As String = "chikaraishi_katsumi@tec.bz" 'argCc() As String, _ 'argBcc() As String, _ 'argPriority As System.Net.Mail.MailPriority 優先度はどこを見ればいいのでしょうかメーラーはLiveメールです。 Dim argSubject As String = "test2" Dim argBody As String = "test" '********************** '1.---> 'argIsHtml As Boolean = text 'textなんですがどう書いたらいいのでしょうか。 '2.---> 'argFile() As System.IO.FileInfo 'ありませんがどう書いたらいいのでしょうか。 '例えば  'argFile("c:\test.xls") As System.IO.FileInfo という感じでいいのでしょうか。 '********************** 'argSubEnc As String, _ 'argBodyEnc As String _ 'SMTPサーバを設定 '※サーバ名、ポート番号を設定 Dim sClient As New System.Net.Mail.SmtpClient( _ argSmtpServer, argPortNo _ ) 'SMTP認証の設定 If argSmtpAuth Then '認証が必要な場合は、ユーザ名とパスワードを設定 'クリアーテキスト認証を使用してログオンするをにしています。 sClient.Credentials = New System.Net.NetworkCredential( _ argUserName, argPassword _ ) End If 'SSLの使用有無を設定 'sClient.EnableSsl = argEnableSsl 'タイムアウトを設定 'If argTimeout.HasValue Then sClient.Timeout = argTimeout 'End If 'メールの設定 Dim mail As New System.Net.Mail.MailMessage Try 'メールアドレス(From) mail.From = New System.Net.Mail.MailAddress(argFrom) '※メールアドレス(To)を設定 mail.To.Add(argTo) 'If Not (argTo Is Nothing) Then ' For Each addr As String In argTo ' mail.To.Add(addr) ' Next 'End If 'メールアドレス(Cc) 'If Not (argCc Is Nothing) Then ' For Each addr As String In argCc ' mail.CC.Add(addr) ' Next 'End If ''メールアドレス(Bcc) 'If Not (argBcc Is Nothing) Then ' For Each addr As String In argBcc ' mail.Bcc.Add(addr) ' Next 'End If '優先度 ' 高い:System.Net.Mail.MailPriority.High ' 普通:System.Net.Mail.MailPriority.Normal ' 低い:System.Net.Mail.MailPriority.Low 'mail.Priority = argPriority '件名を設定 mail.Subject = argSubject '本文を設定 mail.Body = argBody '本文をHTML形式にするかどうか 'mail.IsBodyHtml = argIsHtml '添付ファイル 'If Not (argFile Is Nothing) Then ' For Each f As FileInfo In argFile ' mail.Attachments.Add( _ ' New System.Net.Mail.Attachment(f.FullName)) ' Next 'End If 'エンコード(件名) '例:shift_jis、iso-2022-jp 'mail.SubjectEncoding = Encoding.GetEncoding(argSubEnc) 'エンコード(本文) 'mail.BodyEncoding = Encoding.GetEncoding(argBodyEnc) 'メールを送信 sClient.Send(mail) Finally mail.Dispose() End Try End Sub End Sub

回答No.1

VBでメールを送信する技術は、「悪意による迷惑メール送付技術」でもあります。 従って、その技術を懇切丁寧に教えてくれるサイトはほとんどありません。 しかし、VBでメールを送信することは可能です。 私がメールを送信するマクロを作った時に、大変参考になったサイトを紹介します。 「BASP21」でヒットするサイトへアクセスしてみてください。 メール送信に関わるコア部分が紹介されています。 説明は、詳しく書かれていますが可なりの読解力が必要です。 ご健闘をお祈りします。

10071007
質問者

お礼

すいません初心者ということで教えてください。 サイトを見て自分なりに下記の書き方をしようとしたんですが もうここでデバッグできません。 お手数ですが教えてください。 Private Sub Button10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button10.Click argSmtpServer As String ="smtp.tec.bz" '受信pop3<---ここでデバッグできません。

10071007
質問者

補足

すいません。 お礼に書いたVBは DIMがありませんでした。 もう一度投稿しなおします。

関連するQ&A