有没有一种方法可以将Heroku Scheduler配置为
使用app.json插件配置,以便通过Github中的“部署到Heroku”按钮自动进行设置?我可以使用显示插件
"addons": [ "scheduler" ]
Run Code Online (Sandbox Code Playgroud)
但尚不清楚如何配置脚本名称和频率。
使用此处描述的 NGINX SMTP 中继功能来代理商业 SMTP 服务器,有效地“白标”中继地址(包括证书),同时保留身份验证。
配置 NGINX 如下:
mail {
server_name smtp.proxy.mydomain.net;
auth_http 127.0.0.1:9000/auth;
proxy_pass_error_message on;
xclient off;
smtp_capabilities "8BITMIME" "STARTTLS" "PIPELINING" "ENHANCEDSTATUSCODES";
starttls on;
ssl_certificate /etc/letsencrypt/live/smtp.proxy.mydomain.net/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/smtp.proxy.mydomain.net/privkey.pem;
ssl_protocols TLSv1.2;
ssl_session_cache shared:SSL:10m;
server {
listen 587;
protocol smtp;
smtp_auth login plain;
}
}
Run Code Online (Sandbox Code Playgroud)
当客户端请求 STARTTLS 时,NGINX 使用该证书,并且客户端(在我的例子中swaks)将 AUTH LOGIN 凭据发送到 NGINX。
NGINX 然后调用mail_auth_http_module OK。我有一个简单的 Python Flask 应用程序,它返回指示始终接受身份验证的标头以及服务器地址。您可以在此处查看身份验证服务器对curl请求的响应:
$ curl -v localhost:9000/auth
* Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to localhost (127.0.0.1) …Run Code Online (Sandbox Code Playgroud) RFC2045 第 6.8 节规定 base64 输出的最大编码行长度应为 76 个字符或更少。
Golang 流编写base64.NewEncoder器没有任何用于行拆分的选项,如下所示。
package main
import (
"encoding/base64"
"io"
"os"
"strings"
)
// See https://www.ietf.org/rfc/rfc2045.txt, section 6.8 for notes on maximum line length of 76 characters
func main() {
data := "It is only the hairs on a gooseberry that prevent it from being a grape! This is long enough to need a line split"
rdr := strings.NewReader(data)
wrt := base64.NewEncoder(base64.StdEncoding, os.Stdout)
io.Copy(wrt, rdr)
}
Run Code Online (Sandbox Code Playgroud)
输出是
SXQgaXMgb25seSB0aGUgaGFpcnMgb24gYSBnb29zZWJlcnJ5IHRoYXQgcHJldmVudCBpdCBmcm9tIGJlaW5nIGEgZ3JhcGUhIEl0IGlzIG9ubHkgdGhlIGhhaXJzIG9uIGEgZ29vc2ViZXJyeSB0aGF0IHByZXZlbnQgaXQgZnJvbSBiZWluZyBhIGdyYXBl
Run Code Online (Sandbox Code Playgroud)
是否有基于流的分割线解决方案 …
用于从 RFC822 兼容文件读取标头的库函数对我来说工作得很好,例如:
allRecips = []
for hdrName in ['to', 'cc', 'bcc']:
for i in email.utils.getaddresses(msg.get_all(hdrName, [])):
r = {
'address': {
'name': i[0],
'email': i[1]
}
}
allRecips.append(r)
Run Code Online (Sandbox Code Playgroud)
我现在想从msg上面示例中的结构中删除密件抄送收件人。我查看了del_param()这个,但无法弄清楚要传入的内容。有没有一种好方法可以删除可能存在的任何密件抄送标头(1 个或多个)?