使用 curl 发送电子邮件

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

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   601  
  华为IPD与传统研发模式的8大差异在快速变化的商业环境中,产品研发模式的选择直接决定了企业的市场响应速度和竞争力。华为作为全球领先的通信技术解决方案供应商,其成功在很大程度上得益于对产品研发模式的持续创新。华为引入并深度定制的集成产品开发(IPD)体系,相较于传统的研发模式,展现出了显著的差异和优势。本文将详细探讨华为...
IPD流程是谁发明的   7  
  如何通过IPD流程缩短产品上市时间?在快速变化的市场环境中,产品上市时间成为企业竞争力的关键因素之一。集成产品开发(IPD, Integrated Product Development)作为一种先进的产品研发管理方法,通过其结构化的流程设计和跨部门协作机制,显著缩短了产品上市时间,提高了市场响应速度。本文将深入探讨如...
华为IPD流程   9  
  在项目管理领域,IPD(Integrated Product Development,集成产品开发)流程图是连接创意、设计与市场成功的桥梁。它不仅是一个视觉工具,更是一种战略思维方式的体现,帮助团队高效协同,确保产品按时、按质、按量推向市场。尽管IPD流程图可能初看之下显得错综复杂,但只需掌握几个关键点,你便能轻松驾驭...
IPD开发流程管理   8  
  在项目管理领域,集成产品开发(IPD)流程被视为提升产品上市速度、增强团队协作与创新能力的重要工具。然而,尽管IPD流程拥有诸多优势,其实施过程中仍可能遭遇多种挑战,导致项目失败。本文旨在深入探讨八个常见的IPD流程失败原因,并提出相应的解决方法,以帮助项目管理者规避风险,确保项目成功。缺乏明确的项目目标与战略对齐IP...
IPD流程图   8  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

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

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

内置subversion和git源码管理

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

免费试用