Как отправить электронное письмо из одной учетной записи Gmail в другую, используя пакетный файл или сценарий? - PullRequest
0 голосов
/ 18 июля 2009

Мне нужен крошечный сценарий Windows для отправки 1-строчного электронного письма в учетные записи Gmail. Я пробовал много утилит, которые утверждают, что делают это, таких как BLAT, но ни одна из них не работает. Сценарий будет выполняться внутри командного файла, если соблюдены определенные условия. Скрипт может быть на Perl, Python, VBScript, Java, это не имеет значения, если он выполняется из пакетного файла. Отвечайте только в том случае, если вы опробовали свое решение, отправив электронное письмо на учетную запись Gmail с учетной записи электронной почты Gmail, Hotmail или Yahoo. Учетная запись, которую я использую по умолчанию, - это Gmail, поэтому я отправляю из учетной записи Gmail учетную запись Gmail.

Ответы [ 5 ]

10 голосов
/ 18 июля 2009

Blat позволяет отправлять электронные письма непосредственно из пакетных файлов:

blat.exe - -f from@example.com -to to@gmail.com -s Subject -body "Text body" ^
  -server smtp.example.com:25 -u username -pw password

Но похоже, что Blat не поддерживает SSL, поэтому для работы с Gmail вам необходим дополнительный инструмент под названием Stunnel (см. здесь и здесь ).

В любом случае, вы должны иметь возможность отправлять электронную почту через GMail из VBScript, используя Объекты совместной работы (CDO) COM API:

Const schema   = "http://schemas.microsoft.com/cdo/configuration/"
Const cdoBasic = 1
Const cdoSendUsingPort = 2
Dim oMsg, oConf

' E-mail properties
Set oMsg      = CreateObject("CDO.Message")
oMsg.From     = "from@gmail.com"  ' or "Sender Name <from@gmail.com>"
oMsg.To       = "to@gmail.com"    ' or "Recipient Name <to@gmail.com>"
oMsg.Subject  = "Subject"
oMsg.TextBody = "Text body"

' GMail SMTP server configuration and authentication info
Set oConf = oMsg.Configuration
oConf.Fields(schema & "smtpserver")       = "smtp.gmail.com"
oConf.Fields(schema & "smtpserverport")   = 465
oConf.Fields(schema & "sendusing")        = cdoSendUsingPort
oConf.Fields(schema & "smtpauthenticate") = cdoBasic
oConf.Fields(schema & "smtpusessl")       = True
oConf.Fields(schema & "sendusername")     = "from@gmail.com"
oConf.Fields(schema & "sendpassword")     = "sender_password"
oConf.Fields.Update

oMsg.Send

Редактировать: Добавлен недостающий параметр sendusing, поэтому теперь он должен работать нормально.

См. здесь для большего количества примеров CDO.

5 голосов
/ 18 июля 2009

Взгляните на этот скрипт на perlmonks , который детализирует доступ IMAP к учетной записи GMail. В посте рассказывается обо всем, что вам нужно для входа в учетную запись GMail через Perl.

В качестве альтернативы вы можете попробовать модуль Mail :: Webmail :: Gmail в CPAN. Судя по всему, модуль позволяет вам пропустить большинство сложных деталей, связанных с подключением и аутентификацией к почтовому серверу, оставляя вам что-то такое простое, как -

my $gmail = Mail::Webmail::Gmail->new( username => 'username', password => 'password', );
$gmail->send_message( to => 'user@domain.com', subject => 'Test Message', msgbody => 'This is a test.' );

Также есть Email :: Send :: Gmail на тот случай, если вам нужно «только» отправлять электронные письма из учетной записи Gmail.

3 голосов
/ 18 июля 2009

Если вам нужно просто отправить в GMail с использованием некоторого SMTP, используйте модуль MIME :: Lite Perl в режиме SMTP - я использую его для отправки уведомлений на мою учетную запись GMail.

3 голосов
/ 18 июля 2009
#!c:/Python/python.exe -u
import libgmail
ga = libgmail.GmailAccount("username@gmail.com", "password")
ga.login()
msg=libgmail.GmailComposedMessage("friend@gmail.com", "SubjectHere", "BodyHere")
ga.sendMessage(msg)

Это должно работать в Windows с использованием Python. Убедитесь, что вы изменили shebang вверху, чтобы он указывал на вашу установку на python. Кроме этого, просто введите свое имя и пароль вместе с адресом электронной почты, который вы хотите отправить.

1 голос
/ 18 июля 2009

В Linux (я не уверен, в какой среде вы находитесь) вы можете использовать mail:

some_command| mail foo@gmail.com bar@gmail.com -s "subject"
...