如何使用curl命令行程序从Gmail帐户发送电子邮件?
我尝试了以下内容:
curl -n --ssl-reqd --mail-from "<sender@gmail.com>" --mail-rcpt "<receiver@server.tld>" --url smtps://smtp.gmail.com:465 -T file.txt
使用file.txt作为电子邮件的内容,但是,当我运行此命令时,我收到以下错误:
curl: (67) Access denied: 530
是否可以从个人服务器托管的帐户发送电子邮件,仍然使用curl?这会使身份验证过程更容易吗?
答案 0 :(得分:63)
curl --url 'smtps://smtp.gmail.com:465' --ssl-reqd \
--mail-from 'username@gmail.com' --mail-rcpt 'john@example.com' \
--upload-file mail.txt --user 'username@gmail.com:password' --insecure
mail.txt 文件内容:
From: "User Name" <username@gmail.com>
To: "John Smith" <john@example.com>
Subject: This is a test
Hi John,
I’m sending this mail with curl thru my gmail account.
Bye!
其他信息:
我正在使用curl
版本7.21.6并支持SSL。
--insecure
开关允许curl
执行“不安全”的SSL连接
和转移。请参阅this online resource此在线资源
更多细节。
通过帐户凭据被认为是一种糟糕的安全措施 命令行参数。以上示例仅用于演示目的。
对于不太安全的应用,您必须turn on access。
答案 1 :(得分:2)
如果要以复本或密件抄送方式发送邮件:
curl --url 'smtps://smtp.gmail.com:465' --ssl-reqd \
--mail-from 'username@gmail.com' --mail-rcpt 'john@example.com' \
--mail-rcpt 'mary@gmail.com' --mail-rcpt 'eli@example.com' \
--upload-file mail.txt --user 'username@gmail.com:password' --insecure
From: "User Name" <username@gmail.com>
To: "John Smith" <john@example.com>
Cc: "Mary Smith" <mary@example.com>
Subject: This is a test
a BCC recipient eli is not specified in the data, just in the RCPT list.
答案 2 :(得分:0)
我使用了一个简单的sendmail.sh
#!/bin/bash
declare -A email;
email['user']=$1
email['pass']=$2
email['smtp']=$3
email['prot']='587';
email['rcpt']='your-email-address@gmail.com';
email_content='From: "The title" <'"${email['user']}"'>
To: "Gmail" <'"${email['rcpt']}"'>
Subject: from '"${email['user']}"' to Gamil
Date: '"$(date)"'
Hi Gmail,
'"${email['user']}"' is sending email to you and it should work.
Regards
';
echo "$email_content" | curl -s \
--url "smtp://${email['smtp']}:${email['port']}" \
--user "${email['user']}:${email['pass']}" \
--mail-from "${email['user']}" \
--mail-rcpt "${email['rcpt']}" \
--upload-file - # email.txt
if [[ $? == 0 ]]; then
echo;
echo 'okay';
else
echo "curl error code $?";
man curl | grep "^ \+$? \+"
fi
测试
./sendmail.sh user@domain.com 'password' mail.domain.com