none
vb2017からメール送信 RRS feed

  • 質問

  • 下記サイトを参考にメール送信を行うとしていますが上手く行きません。
    https://dobon.net/vb/dotnet/internet/smtpclient.html
    サイト内に
    「注意:ここで紹介しているコードを実際に使用する場合は、必ずSMTPサーバー、送信者、宛先などの設定を適切に変更してください。」
    という但し書きがありますが、むしろそれが難しいです。

    とりあえず、ボタンに下記のコードを埋め込んでみました。


    <コード>
    '送信者
    Dim senderMail As String = "sender@xxx.xxx"
    '宛先
    Dim recipientMail As String = "recipient@xxx.xxx"
    '件名
    Dim subject As String = "こんにちは"
    '本文
    Dim body As String = "こんにちは。" + vbCrLf + vbCrLf + "それではまた。"

    'SmtpClientオブジェクトを作成する
    Dim sc As New System.Net.Mail.SmtpClient()
    'SMTPサーバーを指定する
    sc.Host = "mail.xxx.xxx"
    'ポート番号を指定する(既定値は25)
    sc.Port = 587
    'メールを送信する
    sc.Send(senderMail, recipientMail, subject, body)
    '後始末(.NET Framework 4.0以降)
    sc.Dispose()


    <設定の前提>
    ドメイン:
    xxx.xxx
    伏せていますが、実在する独自ドメイン

    送信元アドレス:
    sender@xxx.xxx
    さくらレンタルサーバーのWEBメールで作成したアドレス

    SMTPサーバー:
    mail.xxx.xxx
    さくらレンタルサーバーのSMTPサーバー

    Port:
    587

    上記の設定は、PCのメーラ(サンダーバード)で送受信可能であることを確認済。

    付け加えるなら、それ以外にメーラでは
    認証方式:暗号化されたパスワード認証
    接続の保護:STARTTLS
    を設定しています。


    <実行結果>
    SMTP サーバーにセキュリティで保護された接続が必要であるか、またはクライアントが認証されていません。
    サーバーの応答:5.7.0 Authentication required



    <考察>
    このエラーの時は
    EnableSsl = True
    を設定しろという内容が検索で出てきた。

    sc.Send(senderMail, recipientMail, subject, body)
    の前に
    sc.EnableSsl = True
    を入れて再度実行。



    <実行結果>
    検証プロシージャによると、リモート証明書は無効です。



    検索しても、良く理解できない情報しか出てきませんでした。

    何をすればメールを送信する事ができるか、具体的に教えて頂けると幸いです。

    なお、基礎や概念のURLの貼り付けは望んでいません。
    具体的に教えて頂ける方がいらっしゃいましたらよろしくお願いします。

    2017年12月18日 2:01

回答

  • 認証に関する記述がないようですが、どのような認証で接続されようとしていますか?
    SMTP認証であれば、ユーザー名とパスワードが必要になります。サブミッションポートを指定されているので、なおさらです。
    例えば、以下のページでは、ユーザー名とパスワードを指定しています。

    SMTP認証でメールを送信する
    https://dobon.net/vb/dotnet/internet/smtpauth.html


    ★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/

    2017年12月18日 2:16
    モデレータ
  • メールソフト(Outlookなど)では送信がうまくできているのでしょうか?

    また、ご質問のコードでは Credentials プロパティが設定されていませんが、下記のサイトを参考に設定してみてはいかがでしょうか?

    参考サイト: https://dobon.net/vb/dotnet/internet/smtpssltls.html

    2017年12月18日 2:18
  •     .EnableSsl = True
    SSL通信でなければ、この行は不要です。外してみて下さい。

    ★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/

    2017年12月18日 4:18
    モデレータ

すべての返信

  • 認証に関する記述がないようですが、どのような認証で接続されようとしていますか?
    SMTP認証であれば、ユーザー名とパスワードが必要になります。サブミッションポートを指定されているので、なおさらです。
    例えば、以下のページでは、ユーザー名とパスワードを指定しています。

    SMTP認証でメールを送信する
    https://dobon.net/vb/dotnet/internet/smtpauth.html


    ★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/

    2017年12月18日 2:16
    モデレータ
  • メールソフト(Outlookなど)では送信がうまくできているのでしょうか?

    また、ご質問のコードでは Credentials プロパティが設定されていませんが、下記のサイトを参考に設定してみてはいかがでしょうか?

    参考サイト: https://dobon.net/vb/dotnet/internet/smtpssltls.html

    2017年12月18日 2:18
  • ありがとうございます。

    'SmtpClientオブジェクトを作成する
    Dim SmtpClient1 As New System.Net.Mail.SmtpClient()

    With SmtpClient1
        'SMTPサーバーを指定する
        .Host = "mail.xxx.xxx"

        'ポート番号を指定する(既定値は25)
        .Port = 587

        .EnableSsl = True

        .DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network
        .Credentials = New System.Net.NetworkCredential("sender@xxx.xxx", "passwd1")

        'メールを送信する
        .Send(senderMail, recipientMail, subject, body)

        '後始末(.NET Framework 4.0以降)
        .Dispose()
    End With

    こんな感じにして実行しました。
     ↓↓
    検証プロシージャによると、リモート証明書は無効です。

    2017年12月18日 3:15
  • > メールソフト(Outlookなど)では送信がうまくできているのでしょうか?

    サンダーバード(メーラ)で使用しているメールアドレスを用いていますので送受信実績はあります。

    【アカウントの設定】
    アカウント
    sender@xxx.xxx

    サーバーの種類
    IMAPメールサーバー

    サーバー名
    mail.xxx.xxx

    ポート
    143

    ユーザー名
    sender@xxx.xxx

    接続の保護
    STARTTLS

    認証方式
    通常のパスワード認証



    【SMTPサーバーの設定】
    サーバー名
    mail.xxx.xxx

    ポート
    587

    ユーザー名
    sender@xxx.xxx

    認証方式
    暗号化されたパスワード認証

    接続の保護
    STARTTLS
    2017年12月18日 3:28
  •     .EnableSsl = True
    SSL通信でなければ、この行は不要です。外してみて下さい。

    ★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/

    2017年12月18日 4:18
    モデレータ
  • メールが届きました。有難うございました。
    2017年12月18日 5:41