Windowsのバッチファイルからメールを送信したいのですが。これが私のコードです:
blat test.log -server smtp.gmx.com -to [email protected] -f [email protected] -s "test mail" -u "[email protected]" -pw "password" -debug -log envois-mails.log -timestamp
ここに私が得るエラーがあります:
2014.07.23 14:07:26 (Wed): <<<getline<<< 535 Authentication credentials invalid
2014.07.23 14:07:26 (Wed): The SMTP server did not accept Auth PLAIN value.
Are your login userid and password correct?
2014.07.23 14:07:26 (Wed): >>>putline>>> AUTH LOGIN
2014.07.23 14:07:26 (Wed): <<<getline<<< 334 VXNlcm5hbWU6
2014.07.23 14:07:26 (Wed): >>>putline>>> b3Vzcy56YWltQGdtYWlsLmNvbQ==
2014.07.23 14:07:26 (Wed): <<<getline<<< 334 UGFzc3dvcmQ6
2014.07.23 14:07:26 (Wed): >>>putline>>> aG90bWFpbGhvdG1haWw=
2014.07.23 14:07:26 (Wed): <<<getline<<< 535 Authentication credentials invalid
2014.07.23 14:07:26 (Wed): The SMTP server did not accept Auth LOGIN PASSWD value.
2014.07.23 14:07:26 (Wed): >>>putline>>> QUIT
2014.07.23 14:07:26 (Wed): <<<getline<<< 221 gmx.com Service closing transmission channel
問題を解決する方法について何か考えがありますか?
Blat を使用してメールを送信しています
Powershellを使えば簡単にできると思います。
次の手順を実行します:
手順1-CMDを開く(管理者として実行)
ステップ2-Powershellと入力します(Hit Enter)
ステップ3-以下のコードを最初にメモ帳にコピーします
$EmailFrom = “Your email Address” $EmailTo = “Recipients email Address”
$Subject = “The subject of your email”
$Body = “This is just a test mail to verify the working of CMD”
$SMTPServer = “smtp.gmail.com”
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential(“username”, “password”);
$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)
ステップ4-メールアドレスを送信者のメールアドレスに変更する
ステップ5-受信者の電子メールアドレスを変更する
ステップ6-必要に応じて件名と本文を置き換えます
ステップ7-「ユーザー名」と「パスワード」を自分の資格情報に置き換えます。
ステップ8-上記のコードをコピーして、Windows Powershellに貼り付けます。
これは確実にGmailで機能します。その他の場合は、SMTPサーバーとクライアントの詳細を変更してみてください。
他の人が推測しているように、これはGmailがTLS/SSL接続を必要とするためであり、私が見る限りでは、Blatはそれをサポートしていません。
私は stunnel でそれを回避しました。 TLS/SSLが有効になっていないアプリがメールの送信に使用できるTLS/SSLトンネル(この場合はGmail SMTPへ)を設定します。また、TLS/SSLをサポートしていない他のいくつかのアプリからのメール(Gmail経由)にも使用します。 TBH私は設定を思い出しませんが、それはかなり簡単でした。
あなたはまだGmailの認証情報を使用していますが、stunnelサーバーを置き換えます(localhost?-独自のLinuxサーバーでセットアップし、IPを使用していますが、クロスプラットフォームなので、Windowsでlocalhostを使用できます)。
これは、変数を二重引用符で囲むことで機能します。
Powershell Send-MailMessageを呼び出すためにバッチスクリプトを使用しています
バッチスクリプト:send_email.bat
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -windowstyle hidden -command 'E:\path\send_email.ps1
Pwershellスクリプトsend_email.ps1
Send-MailMessage -From "noreply@$env:computername" -To '<[email protected]>' -Subject 'Blah Blah' -SmtpServer 'smtp.domain.com' -Attachments 'E:\path\file.log' -BODY "Blah Blah on Host: $env:computername "