使用 curl 发送电子邮件

2024-10-14 08:40:00
admin
原创
239
摘要:问题描述:如何使用 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”参数上的常用密码。

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   2588  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1553  
  IPD(Integrated Product Development)流程作为一种先进的产品开发管理模式,在众多企业中得到了广泛应用。其中,技术评审与决策评审是IPD流程中至关重要的环节,它们既有明显的区别,又存在紧密的协同关系。深入理解这两者的区别与协同,对于企业有效实施IPD流程,提升产品开发效率与质量具有重要意义...
IPD管理流程   31  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、ClickUp、Freshdesk、GanttPRO、Planview、Smartsheet、Asana、Nifty、HubPlanner、Teamwork。在当今快速变化的商业环境中,项目管理软件已成为企业提升效率、优化资源分配和确保项目按时交付的关键工具。然而...
项目管理系统   26  
  建设工程项目质量关乎社会公众的生命财产安全,也影响着企业的声誉和可持续发展。高质量的建设工程不仅能为使用者提供舒适、安全的环境,还能提升城市形象,推动经济的健康发展。在实际的项目操作中,诸多因素会对工程质量产生影响,从规划设计到施工建设,再到后期的验收维护,每一个环节都至关重要。因此,探寻并运用有效的方法来提升建设工程...
工程项目管理制度   21  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

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

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

内置subversion和git源码管理

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

免费试用