簡単な回答: FROM アドレスは、送信元のアカウントと正確に一致する必要があります。そうしないと、エラー 5.7.1 クライアントには、この送信者として送信する権限がありません。
私の推測では、Office 365 アカウントを使用した電子メールのなりすましを防ぐことができます。それ以外の場合は、sballmer@microsoft.com として送信できる可能性があります。
試してみるもう1つのことは、認証で、次のように3番目のフィールドにドメインを入力します
Dim smtpAuth = New System.Net.NetworkCredential(
"TheDude", "hunter2password", "MicrosoftOffice365Domain.com")
それでもうまくいかない場合は、 https ://portal.microsoftonline.com でアカウントにログインできることを再確認して ください。
さらに注意すべきことは、ウイルス対策ソリューションがスパム対策ソリューションとしてポート 25 および 587 へのプログラムによるアクセスをブロックしている可能性があることです。Norton と McAfee は、これらのポートへのアクセスを黙ってブロックする場合があります。メールとソケットのデバッグを有効にするだけで、これに気付くことができます (以下を参照)。
最後に、SendメソッドはAsynchronousです。電話すれば
廃棄
send を呼び出した直後は、メールが送信される前に接続を閉じる可能性が高くなります。smtpClient インスタンスに OnSendCompleted イベントをリッスンさせ、そこから dispose を呼び出します。代わりに SendAsync メソッドを使用する必要があります。Send メソッドはこのイベントを発生させません。
詳細な回答: Visual Studio (VB.NET または C# は関係ありません) を使用して、上記と同様に、メール メッセージを作成するボタンを備えた単純なフォームを作成しました。次に、これを application.exe.config (プロジェクトの bin/debug ディレクトリ内) に追加しました。これにより、[出力] タブに詳細なデバッグ情報が表示されます。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.diagnostics>
<sources>
<source name="System.Net">
<listeners>
<add name="System.Net" />
</listeners>
</source>
<source name="System.Net.Sockets">
<listeners>
<add name="System.Net" />
</listeners>
</source>
</sources>
<switches>
<add name="System.Net" value="Verbose" />
<add name="System.Net.Sockets" value="Verbose" />
</switches>
<sharedListeners>
<add name="System.Net"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="System.Net.log"
/>
</sharedListeners>
<trace autoflush="true" />
</system.diagnostics>
</configuration>