web-dev-qa-db-ja.com

Windowsバッチファイルからメールを送信する方法

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 を使用してメールを送信しています

6
user2480100

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サーバーとクライアントの詳細を変更してみてください。

3
Stephen

他の人が推測しているように、これはGmailがTLS/SSL接続を必要とするためであり、私が見る限りでは、Blatはそれをサポートしていません。

私は stunnel でそれを回避しました。 TLS/SSLが有効になっていないアプリがメールの送信に使用できるTLS/SSLトンネル(この場合はGmail SMTPへ)を設定します。また、TLS/SSLをサポートしていない他のいくつかのアプリからのメール(Gmail経由)にも使用します。 TBH私は設定を思い出しませんが、それはかなり簡単でした。

あなたはまだGmailの認証情報を使用していますが、stunnelサーバーを置き換えます(localhost?-独自のLinuxサーバーでセットアップし、IPを使用していますが、クロスプラットフォームなので、Windowsでlocalhostを使用できます)。

1
Jeremy Davis

これは、変数を二重引用符で囲むことで機能します。

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 "
0
Aashutosh