使用 curl 发送电子邮件

2024-10-14 08:40:00
admin
原创
195
摘要:问题描述:如何使用 curl 命令行程序从 gmail 帐户发送电子邮件?我尝试了以下方法:curl -n --ssl-reqd --mail-from "<sender@gmail.com>" --mail-rcpt "&lt...

问题描述:

如何使用 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 从个人服务器托管的帐户发送电子邮件?这是否会使身份验证过程更容易?


解决方案 1:

curl --ssl-reqd \n  --url 'smtps://smtp.gmail.com:465' \n  --user 'username@gmail.com:password' \n  --mail-from 'username@gmail.com' \n  --mail-rcpt 'john@example.com' \n  --upload-file mail.txt

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支持 SSL 的版本 7.21.6。

  2. 您不需要使用阻止执行 SSL 连接验证的--insecure开关。请参阅此在线资源以了解更多详细信息。curl

  3. 通过命令行参数传递帐户凭据被认为是一种不安全的做法。使用--netrc-file。请参阅文档。

  4. 您必须开启对安全性较低的应用程序或较新的应用程序密码的访问权限。

解决方案 2:

如果想要以抄送或密件抄送的方式发送邮件:

curl --url 'smtps://smtp.gmail.com:465' --ssl-reqd \n  --mail-from 'username@gmail.com' --mail-rcpt 'john@example.com' \n  --mail-rcpt 'mary@gmail.com' --mail-rcpt 'eli@example.com' \n  --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.

解决方案 3:

email.conf像这样创建一个简单的文件

Username:   hi@example.com
Password:   OKbNGRcjiV
POP/IMAP Server:    mail.example.com

然后简单地运行sendmail.sh,就像在使其可执行之后一样(sudo chmod +x sendmail.sh

./sendmail.sh

代码

#!/bin/bash

ARGS=$(xargs echo  $(perl -anle 's/^[^:]+//g && s/:s+//g && print' email.conf) < /dev/null)
set -- $ARGS "$@";  

declare -A email;
email['user']=$1
email['pass']=$2
email['smtp']=$3
email['port']='587';
email['rcpt']='your-email-address@gmail.com';


email_content='From: "The title" <'"${email['user']}"'>
To: "Gmail" <'"${email['rcpt']}"'>
Subject: from '"${email['user']}"' to Gmail
Date: '"$(date)"'

Hi Gmail,
'"${email['user']}"' is sending email to you and it should work.
Regards
';


echo "$email_content" | curl -s \n    --url "smtp://${email['smtp']}:${email['port']}" \n    --user "${email['user']}:${email['pass']}" \n    --mail-from "${email['user']}" \n    --mail-rcpt "${email['rcpt']}" \n    --upload-file - # email.txt


if [[ $? == 0 ]]; then
    echo;
    echo 'okay';
else
    echo "curl error code $?";
    man curl | grep "^ +$? +"
fi

更多的

解决方案 4:

请注意,mail.txt 的形式似乎很重要/win 为 CRLF,Linux 为 LF,特殊字符等。

最后,经过 2 个小时的努力,它终于为我解决了 GMX 问题(他们说他们的 SMPT 端口是 587 - 并且在下面用小字母提示:“465 也可以用于 SSL”):

Linux 下(Raspberry 3B+ 上的 TinyCore Linux,安装了 curl.tcz):

curl --ssl-reqd --url 'smtps://mail.gmx.net:465' --user 'mymail@gmx.at:mymailPassword' --mail-from 'mymail@gmx.at' --mail-rcpt 'mymail@gmx.at' --upload-file mail.txt

在 Windows 下:

curl --ssl-reqd --url "smtps://mail.gmx.net:465" --user "mymail@gmx.at:mymailPassword" --mail-from "mymail@gmx.at" --mail-rcpt "mymail@gmx.at" --upload-file mail_win.txt

使用 mail.txt:

From: "User Name" <mymail@gmx.at>
To: "John Smith" <mymail@gmx.at>
Subject: This is a test

Hi John,
Im sending this mail with curl thru my gmx account.
Bye!

解决方案 5:

system()请注意,如果使用Perl 的“ ”函数来执行curl命令,则每个参数“单词”都是参数数组中的单独项,并且单词不能用引号引起来

另请注意,如果在 2022 年 5 月 30 日之后通过 Gmail 发送,则必须为 Gmail 帐户设置双重身份验证,然后必须创建“应用密码”。应用密码是一个长字符串,充当备用密码,并替换“ --user”参数上的常用密码。

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1267  
  IPD(Integrated Product Development)即集成产品开发,是一套先进的、成熟的产品开发管理理念、模式和方法。随着市场竞争的日益激烈,企业对于提升产品开发效率、降低成本、提高产品质量的需求愈发迫切,IPD 项目管理咨询市场也迎来了广阔的发展空间。深入探讨 IPD 项目管理咨询的市场需求与发展,...
IPD集成产品开发流程   27  
  IPD(Integrated Product Development)产品开发流程是一套先进的、被广泛应用的产品开发管理体系,它涵盖了从产品概念产生到产品推向市场并持续优化的全过程。通过将市场、研发、生产、销售等多个环节紧密整合,IPD旨在提高产品开发的效率、质量,降低成本,增强企业的市场竞争力。深入了解IPD产品开发...
IPD流程中TR   31  
  IPD(Integrated Product Development)测试流程是确保产品质量、提升研发效率的关键环节。它贯穿于产品从概念到上市的整个生命周期,对企业的成功至关重要。深入理解IPD测试流程的核心要点,有助于企业优化研发过程,打造更具竞争力的产品。以下将详细阐述IPD测试流程的三大核心要点。测试策略规划测试...
华为IPD   26  
  华为作为全球知名的科技企业,其成功背后的管理体系备受关注。IPD(集成产品开发)流程作为华为核心的产品开发管理模式,在创新管理与技术突破方面发挥了至关重要的作用。深入剖析华为 IPD 流程中的创新管理与技术突破,对于众多企业探索自身发展路径具有重要的借鉴意义。IPD 流程概述IPD 流程是一种先进的产品开发管理理念和方...
TR评审   26  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用