我正在使用 python mailjet api,发现我可以设置发件人的姓名,这样我就可以让它们从“Carlos”显示,而不是从“Info”(info@example.com)显示电子邮件。我还想添加一张像西南航空或 Twitter 那样的个人资料图片。
有人知道我该怎么做吗?
我知道如果我不发布代码人们就会生气,所以这里有一些代码:
mailjet = Client(auth=(API_KEY, API_PASSWORD), version='v3.1')
data = {
'Messages': [
{
"From": {
"Email": "info@example.com",
"Name": "Carlos"
},
"To": [
{
"Email": trip.email
}
],
"Subject": "Subject of the message",
"TextPart":"This is the body of the message",
"Headers": {
"X-My-Header": "https://www.example.com/profile_pic.png"
}
}
]
}
mailjet.send.create(data=data)
Run Code Online (Sandbox Code Playgroud) 我使用Mailjet api将提交的电子邮件存储在Mailjet列表中.当有了Mailjet 0.1版本的API(然后没有任何PHP包装但很容易使用他们的示例)时,这种方法正常工作,但是当他们将API更改为版本3时,他们的PHP包装器在添加时不会返回任何联系人ID联系人列表的新联系人.我之前提出了一个类似的问题,如何让Mailjet工作,但现在这个问题出现在新版本3中.
这里再次是更正的代码,
*假设显示的电子邮件是尚未在Mailjet中创建的新联系人.
$mj = new Mailjet();
$contact_params = array("method" => "POST", "Email" => "abc@gmail.com");
$contact = $mj->contact($contact_params);
$add_params = array(
"method" => "POST",
"ContactID" => $contact,
"ListID" => _MAILJET_LIST,
"IsActive" => "True"
);
$mj->listrecipient($add_params);
Run Code Online (Sandbox Code Playgroud)
开发人员@Gormador说要$contact->Data[0]->ID
用作联系人ID,但它仍然返回NULL.
尝试将创建的联系人添加到列表时(调试模式设置为2),我收到此错误.
array(3) { ["ContactID"]=> NULL ["ListID"]=> string(1) "2"
["IsActive"]=> string(4) "True" } string(105) "{ "ErrorInfo" : "",
"ErrorMessage" : "Invalid data: \"null\" is an invalid integer",
"StatusCode" : 400 }"
Run Code Online (Sandbox Code Playgroud)
上一个问题:Mailjet:向列表添加电子邮件不起作用
更新:包含更正的完整代码,
$mj = new Mailjet();
$add_email = "testing" …
Run Code Online (Sandbox Code Playgroud) 如何在 Mailjet API 中添加回复电子邮件标头?或者其他标头?
谷歌搜索显示了该属性ReplyEmail
,但这仅适用于Newsletter.Resource
而不适用于Send.Resource
。
我已经在 Mailjet 服务注册了一个帐户,获取了 API 密钥,并尝试使用库https://github.com/mailjet/mailjet-apiv3-php从我的开发服务器发送一些测试电子邮件。
我总是收到 401 未经授权的答案,并且在我的 mailjet.com 帐户中有一条消息:
“您的发送活动目前已暂停。请联系我们的支持团队以获取更多信息。”
无法从他们的支持中得到任何合理的答案,只能得到标准的机器人消息。谁能帮我这个?
我正在使用 Mailjet Send API。
我可以使用这部分代码发送电子邮件:
$body = [
'Messages' => [
[
'From' => [
'Email' => "$fromm",
'Name' => "$namee"
],
'To' => [
[
'Email' => "$to",
'Name' => ""
]
]
'Subject' => "$subject",
'TextPart' => "$text",
'HTMLPart' => "$confirmationMail",
'CustomID' => "AppGettingStartedTest"
]
]
];
$response = $mj->post(Resources::$Email, ['body' => $body]);
$response->success();
$success=$response->getData()["Messages"][0]["Status"];
Run Code Online (Sandbox Code Playgroud)
但如果我想添加抄送或密件抄送,例如:
$body = [
'Messages' => [
[
'From' => [
'Email' => "$fromm",
'Name' => "$namee"
],
'To' => [
[
'Email' …
Run Code Online (Sandbox Code Playgroud) 是否可以从mailjet 中实际删除a ?contact
他们的联系 API 文档甚至没有delete
列为受支持的操作。
from mailjet_rest import Client
mailjet = Client(auth=(MAILJET_API_KEY, MAILJET_API_SECRET), version='v3')
mailjet.contact.delete(<contact-id>).json()
{'ErrorInfo': '', 'ErrorMessage': 'Operation not allowed', 'StatusCode': 401}
Run Code Online (Sandbox Code Playgroud)
我有兴趣删除 a contact
,而不是 a list recipient
,因此这个问题不是如何使用mailjet api和php从列表中删除联系人的重复?.
I\xe2\x80\x99m 正在开发一个用 MJML 编写的 Mailjet 电子邮件模板,该模板使用通过提供的数组值Vars
来生成发件人希望从邮件收件人接收的项目列表。数组中的所有值都是纯文本值。
传递给 API 请求的数据如下所示:
\n\n{\n "FromEmail":"sender@email.com",\n "FromName":"Chris Crumble",\n "Subject":"Data Request",\n "MJ-TemplateID":"200000",\n "MJ-TemplateLanguage":true,\n "Recipients":[\n {\n "Email":"recipient@email.com",\n "Name":"Hans Henson"\n }\n ],\n "Vars":{\n "mailTitle":"Data Request",\n "userName":"Chris Crumble",\n "imageUrl":"http://my.host.com/image.jpg",\n "userBirthDate":"1.3.1982",\n "recipientName":"Hans Henson",\n "uploadUrl":"https://my.upload.com/",\n "authVideoUrl":"https://my.authvideo.com",\n "records":["Document A","Document B"],\n "authPhone":"113777840097"\n }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n模板的使用方式var:records
如下:
...\n </mj-text>\n <mj-raw> {% if var:records:false %} </mj-raw>\n <mj-text>\n <p>\n I, <strong>{{var:userName}}, born on {{var:userBirthDate}}</strong> am asking you to provide the following documents:\n </p>\n </mj-text>\n <mj-raw> {% for item in var:records …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用我的Mailjet凭据从我的golang应用程序发送电子邮件,但我正在尝试以正常的golang方式(是的,我知道他们的库是非常鼓励的).
我使用Mailjet库可以很好地处理电子邮件,但我的老板非常清楚我们可能永远不会留在Mailjet.如果我们切换到不同的电子邮件解决方案,我们不希望重写所有电子邮件代码,我们只想更改我们的主机名和凭据.
我的打印机使用相同的主机名和凭据通过Mailjet发送电子邮件,但由于某种原因,我的golang应用程序不会!
我的代码是从golang smtp库SendEmail示例中采用的.
这是(当然没有我的凭据):
import (
"bytes"
"fmt"
"net/smtp"
)
func SendTestEmail() (bool, error) {
fmt.Println("Send Test Email: Enter")
success := false
hostname := "in-v3.mailjet.com"
auth := smtp.PlainAuth("", username, password, hostname)
to := []string{"me@example.com"}
msg := []byte("To: me@example.com\r\n" +
"Subject: discount Gophers!\r\n" +
"\r\n" +
"This is the email body.\r\n")
fmt.Println("Send Test Email: Sending Email")
err := smtp.SendMail(hostname+":587", auth, "sender@example.com", to, msg)
if err == nil {
fmt.Println("Send Test Email: Email successfully sent!")
success …
Run Code Online (Sandbox Code Playgroud) 我想它曾经让我,不知道发生了什么变化?我无法在 Mailjet 模板“For”循环内部使用逻辑。它不喜欢我的FormatNumber
或if
我的变量:
"Variables": {
"CurrentYear": "",
"OutstandingInvoices": [{"InvoiceNum": "100", "Total": 100.00, "DaysPastDue": "5", "InvoiceMonth": "May", "InvoiceYear": "2021"}],
"CustomerID": "",
"CustomerName": "",
"InvoiceYear": "",
"InvoiceMonth": ""
}
}
Run Code Online (Sandbox Code Playgroud)
我的模板代码:
{% for invoice in var:OutstandingInvoices %}
{{invoice.InvoiceMonth}} {{invoice.InvoiceYear}} for {{FormatNumber("$#,###.00", invoice.Total)}} {% if invoice.DaysPastDue > 0 %} : {{invoice.DaysPastDue}} days late {% endif %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
给我以下错误:
(1)ERender错误:表达式解析错误:未知标识符invoice.Total接近FormatNumber(“$#,###.00”,invoice.Total)
(2) ERender错误:表达式解析错误:未知标识符invoice.DaysPastDue接近invoice.DaysPastDue > 0
杂项
我想知道这是否与无法在 for 循环中使用默认值有关(根据我的其他问题:Mailjet Non-Nested Loop Failing)
那么 for 循环中不允许任何类型的逻辑吗?
我有这段代码可以向多个收件人发送电子邮件,该代码可以很好地处理静态数据
$subject = 'test';
include("mailjet/php-mailjet-v3.class.php");
$mj = new Mailjet( 'api', 'secret' );
$params = array(
"method" => "POST",
"FromEmail" => "order@domain.com",
"FromName" => "sender name",
"Subject" => "subject here",
"Html-Part" => "<html><table><tr><td colspan='2'>message</td></tr></table></html>",
"Text-Part" => "message",
'Recipients' => [
[
'Email' => "passenger1@mailjet.com",
'Name' => "passenger 1"
],
[
'Email' => "passenger2@mailjet.com",
'Name' => "passenger 2"
]
]
);
$result = $mj->send($params);
echo $mj->_response_code; //200 success
Run Code Online (Sandbox Code Playgroud)
但是当我以这种方式使用动态数据时,我收到错误 500 并且电子邮件未发送
//an array of emails from the db
$user[] = 'user1@mail.com';
$user[] …
Run Code Online (Sandbox Code Playgroud) 我有一个 kubernetes 集群,其中的应用程序在 Istio 服务网格中运行。在一个应用程序中,我尝试使用 SMTP 发送电子邮件。如何设置 Istio 规则以允许我的应用程序使用我的外部 SMTP 服务器?
最初我收到一个异常“无法连接到 SMTP 主机:in-v3.mailjet.com,端口:587,响应:-1。” 详细信息请参见此处。访问该网站后,我意识到我需要提供出口规则,我按照以下方式执行了操作
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
name: mailjet
spec:
hosts:
- "in-v3.mailjet.com"
location: MESH_EXTERNAL
ports:
- number: 587
name: tls
protocol: TLS
resolution: DNS
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: mailjet
spec:
hosts:
- "*.mailjet.com"
tls:
- match:
- port: 587
sni_hosts:
- "*.mailjet.com"
route:
- destination:
host: "*.mailjet.com"
port:
number: 587
weight: 100
Run Code Online (Sandbox Code Playgroud)
我不再收到“无法连接到 SMTP 主机”异常,但收到 SocketTieoutException
[0m[31m06:56:39,048 ERROR [stderr] (default task-55) …
Run Code Online (Sandbox Code Playgroud) 如果我可以通过mailjet从前端发送电子邮件而不需要后端,那将是非常棒的.
其页面上的唯一实现是针对后端系统.但是理论上不应该在没有后端的情况下使用mailjet吗?通过mailjet发送电子邮件应该只是一些帖子请求,不是吗?如果是这样,为什么没有JS实现?