使用curl发送电子邮件

时间:2013-02-06 05:59:21

标签: linux email curl command-line gmail

如何使用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?这会使身份验证过程更容易吗?

3 个答案:

答案 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!

其他信息:

  1. 我正在使用curl版本7.21.6并支持SSL。

  2. --insecure开关允许curl执行“不安全”的SSL连接 和转移。请参阅this online resource此在线资源 更多细节。

  3. 通过帐户凭据被认为是一种糟糕的安全措施 命令行参数。以上示例仅用于演示目的。

  4. 对于不太安全的应用,您必须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

more

测试

./sendmail.sh user@domain.com 'password' mail.domain.com