首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Sparkpost使用bash、CURL和SMTP协议发送电子邮件

Sparkpost使用bash、CURL和SMTP协议发送电子邮件
EN

Stack Overflow用户
提问于 2021-03-25 13:59:55
回答 1查看 158关注 0票数 1

我正在尝试设置自动发送电子邮件。

我想出了如何通过HTTP做到这一点:

代码语言:javascript
运行
AI代码解释
复制
curl -v \
-H "Content-Type: application/json" \
-H "Authorization: <MY_KEY>" \
-POST https://api.sparkpost.com/api/v1/transmissions \
-d '{
        "options":
        {
            "open_tracking": true,
            "click_tracking": true
        },
        "recipients":
        [
            {
                "address":
                {
                    "email": "to@domain.com"
                }
            }
        ],
        "content":
        {
            "from":
            {
                "name": "ME",
                "email": "from@domain.com"
            },
            "subject": "testing",
            "text": "testing"
        }
    }'

但我想使用SMTP协议,因为这是更好的方式来生成编码在base64文件中的电子邮件。

例如,我如何从bash脚本向google帐户发送邮件:

代码语言:javascript
运行
AI代码解释
复制
curl \
--ssl-reqd \
--url 'smtps://smtp.gmail.com:465' \
--user "$SENDER:$PASSWORD" \
--mail-from "$SENDER" \
--mail-rcpt "$RECIPIENT" \
-T "mail.txt" -k --anyauth

mail.txt包含:

代码语言:javascript
运行
AI代码解释
复制
From: "ME" <from@gmail.com>
To: "YOU" <to@gmail.com>
Subject: Test
Content-Type: multipart/mixed; boundary=MixedBoundary

--MixedBoundary\n
Content-Type: text/html; charset=\"utf-8
<html>
 <body><div>
  <p>Hello from linux terminal</p>
 </div></body>
</html>

--MixedBoundary
Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; charset=utf-8
Content-Transfer-Encoding: base64
Content-Disposition: inline; filename=file.xlsx

...base64symbols...

[base64-encoded text]

--MixedBoundary-

第二种方法比第一种方法方便得多,因为我可以使用bash脚本轻松地收集所需的任何文件,因此我想为sparkpost重新创建它。

不幸的是,我找不到一个正常的描述来逐字逐句地这样做。在早期阶段,我遇到了一个授权问题。正如我从smtp api文档中了解到的:https://developers.sparkpost.com/api/smtp/我必须授权如下:

代码语言:javascript
运行
AI代码解释
复制
my_email@domain.com:<MY_AUTH_KEY>

因此,我尝试连接以查看sparkpost的输出:

代码语言:javascript
运行
AI代码解释
复制
curl -v \
--ssl-reqd \
--url "smtps://smtp.sparkpostmail.com:587" \
--user "my_email@domain.com:<MY_AUTH_KEY>"

输出:

代码语言:javascript
运行
AI代码解释
复制
*   Trying 52.34.121.1:587...
* TCP_NODELAY set
* Connected to smtp.sparkpostmail.com (52.34.121.1) port 587 (#0)
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* error:1408F10B:SSL routines:ssl3_get_record:wrong version number
* Closing connection 0
curl: (35) error:1408F10B:SSL routines:ssl3_get_record:wrong version number

所以我有两个问题:

如何使用SMTP获得sparkpost的身份验证?

第二种发送电子邮件的方式对sparkpost有效吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-26 14:23:37

我更精确地解决了这个问题,并发现了错误。一开始我试着这样连接:

--url "smtps://smtp.sparkpostmail.com:587"

当我不得不这样做的时候:

--url "smtp://smtp.sparkpostmail.com:587"

要根据documentation而不是登录信息通过SMTP在Sparkpost中获得授权,您应该编写SMTP_Injection

授权本身看起来像这样:

--user "SMTP_Injection:<YOUR_COOL_API_KEY>"

一般而言,所有内容都是这样的:

代码语言:javascript
运行
AI代码解释
复制
curl -v \
--ssl --url "smtp://smtp.sparkpostmail.com:587" \
--user "SMTP_Injection:<YOUR_COOL_API_KEY>" \
--mail-from "from@domain.com" \
--mail-rcpt "to@domain.com" \
-T "example_file.txt" -k --anyauth

example_file.txt:

代码语言:javascript
运行
AI代码解释
复制
From: Name Surname <from@domain.com>
To: Name Surname <to@domain.com>
Subject: Example
Cc:
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="DELIMETER"

--DELIMETER
Content-Type: text/plain; charset=utf-8

Hello, Johny, look at this cat!

--DELIMETER
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-Disposition: inline; filename=funny_cat.jpg

LOMmL91PLmHcp0/E+eErv5zObgIRo/+vJJN6cto1cDRJ2g

--DELIMETER--
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66801073

复制
相关文章
用curl命令通过smtp协议发送邮件
为啥我要用curl来发邮件呢?主要是服务器不是邮件服务器,也没有装sendmail、postfix这类邮件服务,有时写一些脚本会用邮件提醒,这时候用curl就非常方便了。
用户2323866
2021/06/23
5.2K0
Python3.6使用SMTP协议发送邮件
开启IMAP/SMTP服务,SMTP服务器: smtp.126.com,设置开启客户端授权密码(代码里的登录密码需使用此授权密码)
geekfly
2022/04/24
5770
Python3.6使用SMTP协议发送邮件
Spring Boot – 通过 SMTP 发送电子邮件
Spring Boot提供了使用JavaMail库通过 SMTP 发送电子邮件的功能。在这里,我们将说明开发可用于发送带或不带附件的电子邮件的 Restful Web 服务的分步指南。为了开始执行这些步骤,我们首先使用 Spring Initializer 创建一个 Spring Boot 项目。
用户1418987
2023/10/26
5740
Spring Boot – 通过 SMTP 发送电子邮件
电子邮件相关协议——SMTP,MIME,POP,IMAP
版权声明:本文为博主原创文章,转载请注明博客地址: https://blog.csdn.net/zy010101/article/details/86564716
zy010101
2019/05/25
2.5K0
java实现发送邮件服务器,SMTP协议发送邮件
1.采用SMTP的邮件发送协议。准备:在网易注册一个邮箱,进入设置开启SMTP/pop3协议 2.接下来就是java代码实现了,下面都有注释,就不多做解释了。 public class mail {
生活创客
2018/01/30
4.5K0
java实现发送邮件服务器,SMTP协议发送邮件
不使用smtp直接发送邮件
用smtp发邮件挺蛋疼的,不是有配额限制就是有配额限制.所以我觉得应该有直接发送邮件的办法.回归到用命令行装逼的年代,我们是这样发信的: C:\>nslookup 默认服务器: google-public-dns-a.google.com Address: 8.8.8.8 > set type=mx > qq.com 服务器: google-public-dns-a.google.com Address: 8.8.8.8 非权威应答: qq.com MX preference = 10, mail
码农二狗
2018/06/29
2.8K1
如何在FreeBSD 10.1上使用Sendmail通过外部SMTP服务发送电子邮件
设置新的Web服务器时最常见的需求之一是发送电子邮件。最安全,最简单的方法是将服务器连接到SendGrid或Amazon SES等邮件服务。使用外部服务将帮助您避免陷阱,例如您的服务器IP被反垃圾邮件服务列入黑名单。
温浪
2018/10/19
3.2K0
基于SMTP协议的邮件发送功能JavaEE实现
本博客介绍基于SSM框架(Spring4.0+SpringMVC+Mybatis)组合的Javamail应用,邮箱的话基于腾讯的QQ邮箱,其实也是Foxmail邮箱
SmileNicky
2019/01/17
7520
无插件使用SMTP发送邮件
但是对于很多和我一样不喜欢使用插件的人来说,很多SMTP插件不好用,而且有的还报错。
许都博客
2021/06/16
1.1K0
【Laravel】使用QQ SMTP发送邮件
MAIL_DRIVER=smtp MAIL_HOST=smtp.qq.com MAIL_PORT=465 MAIL_USERNAME=[**邮箱地址**] MAIL_PASSWORD=[**QQ邮箱的授权码(不是邮箱密码)**] MAIL_ENCRYPTION=ssl
redszhao
2021/08/09
1.2K0
【Laravel】使用QQ SMTP发送邮件
使用Postfix,Dovecot和MySQL发送电子邮件
在本指南中,您将学习如何在Debian或Ubuntu上使用Postfix,Dovecot和MySQL设置安全的虚拟用户邮件服务器。我们将解释如何创建新的用户邮箱以及如何在配置的域中发送或接收电子邮件。
Techeek
2018/09/18
3.8K0
使用Postfix,Dovecot和MySQL发送电子邮件
[GO]使用go-smtp发送邮件通知
直接使用go-smtp包 ,为了防止乱码 , 主题subject进行了base64编码
唯一Chat
2021/02/25
1.6K0
[快学Python3]SMTP发送邮件
概述 在本文中,主要介绍使用smtplib进行文本格式、HTML格式和带附件的邮件发送处理。 导入smtplib模块 import smtplib 关键函数说明 # 创建smtp对象 smtp = smtplib.SMTP([host [, port [, localhost]]] ) # 参数说明 # host: smtp服务地址,例如126邮箱的是:smtp.126.com # port: smtp服务端口 # localhost: 如果你的smtp服务在本机,则只需指定localhost即可 #
苦叶子
2018/04/09
4K0
[快学Python3]SMTP发送邮件
SMTP协议
> 参考文献 [RFC 5321](https://www.rfc-editor.org/rfc/rfc5321.txt "https://www.rfc-editor.org/rfc/rfc5321.txt")
孤鸿
2022/09/23
1.6K0
使用 PHP发送电子邮件
PHP 运行邮件函数需要一个已安装且正在运行的邮件系统(如:sendmail、postfix、qmail等)。所用的程序通过在 php.ini 文件中的配置设置进行定义。
小颖club
2022/04/11
2.6K0
软件测试|使用 cURL 发送请求
cURL 是一个通过 URL 传输数据的,功能强大的命令行工具。cURL 可以与 Chrome Devtool 工具配合使用,把浏览器发送的真实请求还原出来,附带认证信息,脱离浏览器执行,方便开发者重放请求、修改参数调试,编写脚本。也可以单独使用,根据自己的需求构造请求调整参数,构造多种接口测试场景。
霍格沃兹测试开发Muller老师
2023/01/03
1K0
技术分享 | 使用 cURL 发送请求
cURL 是一个通过 URL 传输数据的,功能强大的命令行工具。cURL 可以与 Chrome Devtool 工具配合使用,把浏览器发送的真实请求还原出来,附带认证信息,脱离浏览器执行,方便开发者重放请求、修改参数调试,编写脚本。也可以单独使用,根据自己的需求构造请求调整参数,构造多种接口测试场景。
霍格沃兹测试开发Muller老师
2022/08/09
8860
Linux使用mail配合smtp发送邮件
由于工作需要结合shell脚本需要发送邮件通知,linux自带的mail可以实现外部smtp发邮件。不需要本地配置postfix,sendmail邮件服务器。
星哥玩云
2022/05/26
3.6K0
Linux使用mail配合smtp发送邮件
python SMTP邮件发送
本例使用的时python2.7环境,python3的操作应该也是差不多的。 需要用到smtplib和email两个包。
py3study
2020/01/16
1.8K0
点击加载更多

相似问题

使用c#发送Sparkpost smtp电子邮件

147

PHP通过curl向sparkpost API发送电子邮件列表

35

发送无SMTP协议的电子邮件

13

测试Sparkpost SMTP中继

11

SparkPost发送电子邮件

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文