smartpush 1.4.0__tar.gz → 1.4.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {smartpush-1.4.0 → smartpush-1.4.2}/PKG-INFO +2 -2
- smartpush-1.4.2/README.md +115 -0
- {smartpush-1.4.0 → smartpush-1.4.2}/setup.py +3 -3
- {smartpush-1.4.0 → smartpush-1.4.2}/smartpush/flow/MockFlow.py +38 -21
- smartpush-1.4.2/smartpush/test.py +207 -0
- {smartpush-1.4.0 → smartpush-1.4.2}/smartpush.egg-info/PKG-INFO +2 -2
- smartpush-1.4.0/README.md +0 -44
- smartpush-1.4.0/smartpush/test.py +0 -348
- {smartpush-1.4.0 → smartpush-1.4.2}/setup.cfg +0 -0
- {smartpush-1.4.0 → smartpush-1.4.2}/smartpush/__init__.py +0 -0
- {smartpush-1.4.0 → smartpush-1.4.2}/smartpush/export/__init__.py +0 -0
- {smartpush-1.4.0 → smartpush-1.4.2}/smartpush/export/basic/ExcelExportChecker.py +0 -0
- {smartpush-1.4.0 → smartpush-1.4.2}/smartpush/export/basic/GetOssUrl.py +0 -0
- {smartpush-1.4.0 → smartpush-1.4.2}/smartpush/export/basic/ReadExcel.py +0 -0
- {smartpush-1.4.0 → smartpush-1.4.2}/smartpush/export/basic/__init__.py +0 -0
- {smartpush-1.4.0 → smartpush-1.4.2}/smartpush/flow/__init__.py +0 -0
- {smartpush-1.4.0 → smartpush-1.4.2}/smartpush/get_jira_info.py +0 -0
- {smartpush-1.4.0 → smartpush-1.4.2}/smartpush/utils/DataTypeUtils.py +0 -0
- {smartpush-1.4.0 → smartpush-1.4.2}/smartpush/utils/EmailUtlis.py +0 -0
- {smartpush-1.4.0 → smartpush-1.4.2}/smartpush/utils/ListDictUtils.py +0 -0
- {smartpush-1.4.0 → smartpush-1.4.2}/smartpush/utils/StringUtils.py +0 -0
- {smartpush-1.4.0 → smartpush-1.4.2}/smartpush/utils/__init__.py +0 -0
- {smartpush-1.4.0 → smartpush-1.4.2}/smartpush.egg-info/SOURCES.txt +0 -0
- {smartpush-1.4.0 → smartpush-1.4.2}/smartpush.egg-info/dependency_links.txt +0 -0
- {smartpush-1.4.0 → smartpush-1.4.2}/smartpush.egg-info/top_level.txt +0 -0
@@ -0,0 +1,115 @@
|
|
1
|
+
# SmartPush_AutoTest
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
## Getting started
|
6
|
+
|
7
|
+
## 打包/上传的依赖(已安装不需要再次安装)
|
8
|
+
```sh
|
9
|
+
pip install wheel
|
10
|
+
pip install twine
|
11
|
+
```
|
12
|
+
|
13
|
+
## 1、清空本地文件夹
|
14
|
+
|
15
|
+
```sh
|
16
|
+
#!/bin/bash
|
17
|
+
|
18
|
+
# 定义要清空的目录和文件类型
|
19
|
+
BUILD_DIR="build"
|
20
|
+
DIST_DIR="dist"
|
21
|
+
EGG_INFO_PATTERN="*.egg-info"
|
22
|
+
|
23
|
+
# 清空 build 目录
|
24
|
+
if [ -d "$BUILD_DIR" ]; then
|
25
|
+
rm -rf "$BUILD_DIR"
|
26
|
+
echo "成功删除 $BUILD_DIR 目录"
|
27
|
+
else
|
28
|
+
echo "$BUILD_DIR 目录不存在"
|
29
|
+
fi
|
30
|
+
|
31
|
+
# 清空 dist 目录
|
32
|
+
if [ -d "$DIST_DIR" ]; then
|
33
|
+
rm -rf "$DIST_DIR"
|
34
|
+
echo "成功删除 $DIST_DIR 目录"
|
35
|
+
else
|
36
|
+
echo "$DIST_DIR 目录不存在"
|
37
|
+
fi
|
38
|
+
|
39
|
+
# 查找并删除所有 .egg-info 文件或目录
|
40
|
+
find . -name "$EGG_INFO_PATTERN" -exec rm -rf {} +
|
41
|
+
echo "已删除所有 $EGG_INFO_PATTERN 文件或目录"
|
42
|
+
|
43
|
+
```
|
44
|
+
|
45
|
+
## 2、更新版本号
|
46
|
+
```sh
|
47
|
+
#!/bin/bash
|
48
|
+
# 从 setup.py 文件中提取版本号
|
49
|
+
version=$(grep "version=" setup.py | sed -E "s/.*version=['\"]([^'\"]+)['\"].*/\1/")
|
50
|
+
# 将版本号拆分为数组
|
51
|
+
version_parts=($(echo "$version" | awk -F. '{for(i=1;i<=NF;i++) print $i}'))
|
52
|
+
# 获取版本号数组的长度
|
53
|
+
len=${#version_parts[@]}
|
54
|
+
# 输出拆分后的数组,用于调试
|
55
|
+
echo "拆分后的版本号数组: ${version_parts[@]}"
|
56
|
+
# 增加最后一位版本号
|
57
|
+
last_index=$((len))
|
58
|
+
((version_parts[$last_index]++))
|
59
|
+
# 处理进位
|
60
|
+
for ((i = last_index; i > 0; i--)); do
|
61
|
+
if [ ${version_parts[$i]} -ge 10 ]; then
|
62
|
+
version_parts[$i]=0
|
63
|
+
((version_parts[$i - 1]++))
|
64
|
+
else
|
65
|
+
break
|
66
|
+
fi
|
67
|
+
done
|
68
|
+
# 重新组合版本号
|
69
|
+
new_version=$(IFS=. ; echo "${version_parts[*]}")
|
70
|
+
# 根据系统类型使用不同的 sed 命令
|
71
|
+
if [[ "$(uname)" == "Darwin" ]]; then
|
72
|
+
sed -i '' "s/version=['\"][^'\"]*['\"]/version='$new_version'/" setup.py
|
73
|
+
else
|
74
|
+
sed -i "s/version=['\"][^'\"]*['\"]/version='$new_version'/" setup.py
|
75
|
+
fi
|
76
|
+
echo "版本号已从 $version 更新为 $new_version"
|
77
|
+
```
|
78
|
+
|
79
|
+
|
80
|
+
## 3、打包
|
81
|
+
```sh
|
82
|
+
python setup.py bdist_wheel
|
83
|
+
if [ $? -eq 0 ]; then
|
84
|
+
echo "bdist_wheel 执行成功"
|
85
|
+
else
|
86
|
+
echo "bdist_wheel 执行失败"
|
87
|
+
fi
|
88
|
+
```
|
89
|
+
|
90
|
+
|
91
|
+
## 4、上传到pipy的命令
|
92
|
+
```sh
|
93
|
+
twine upload dist/*
|
94
|
+
```
|
95
|
+
|
96
|
+
# 平台调用demo
|
97
|
+
```
|
98
|
+
import json # import 请置于行首
|
99
|
+
from smartpush.export.basic import ExcelExportChecker
|
100
|
+
from smartpush.export.basic import GetOssUrl
|
101
|
+
oss=GetOssUrl.get_oss_address_with_retry(vars['queryOssId'], "${em_host}", json.loads(requestHeaders))
|
102
|
+
result = ExcelExportChecker.check_excel_all(expected_oss=oss,actual_oss=vars['exportedOss'],ignore_sort =True)
|
103
|
+
assert result
|
104
|
+
```
|
105
|
+
## check_excel_all() 支持拓展参数
|
106
|
+
1、check_type = "including" 如果需要预期结果包含可传 eg.联系人导出场景可用,flow导出场景配合使用
|
107
|
+
2、ignore_sort = 0 如果需要忽略内部的行排序问题可传,eg.email热点点击数据导出无排序可用,传指定第几列,0是第一列
|
108
|
+
3、ignore_sort_sheet_name = "url点击" 搭配ignore_sort使用,指定哪个sheet忽略排序,不传默认所有都排序,参数大小写不敏感(url点击-URL点击)
|
109
|
+
4、skiprows = 1 传1可忽略第一行, eg.如flow的导出可用,动态表头不固定时可以跳过读取第一行
|
110
|
+
|
111
|
+
## get_oss_address_with_retry(target_id, url, requestHeader, requestParam=None, is_import=False, **kwargs)
|
112
|
+
1、is_import 导入校验是否成功传True,否则默认都是导出
|
113
|
+
2、**kwargs 参数支持重试次数
|
114
|
+
tries = 30 # 重试次数
|
115
|
+
delay = 2 # 延迟时间,单位s
|
@@ -2,12 +2,12 @@ from setuptools import setup, find_packages
|
|
2
2
|
|
3
3
|
setup(
|
4
4
|
name='smartpush',
|
5
|
-
version='1.4.
|
5
|
+
version='1.4.2',
|
6
6
|
description='用于smartpush自动化测试工具包',
|
7
|
-
author='
|
7
|
+
author='lulu、felix、long',
|
8
8
|
packages=find_packages(),
|
9
9
|
install_requires=[
|
10
10
|
# List your package's dependencies here
|
11
11
|
# TODO
|
12
12
|
],
|
13
|
-
)
|
13
|
+
)
|
@@ -5,8 +5,11 @@ import requests
|
|
5
5
|
from smartpush.utils import ListDictUtils
|
6
6
|
|
7
7
|
|
8
|
-
def get_current_flow(host_domain, cookies, flow_id):
|
9
|
-
# 提取flow所有节点数据
|
8
|
+
def get_current_flow(host_domain, cookies, flow_id, splits=None, **kwargs):
|
9
|
+
"""# 提取flow所有节点数据
|
10
|
+
splits: list, 需断言时填写, 拆分节点走向,必须走到终点, 如: ["false", "true"],即走到拆分节点限制不满足分支再走满足分支
|
11
|
+
get_email_content: bool,是否提取邮件内容
|
12
|
+
"""
|
10
13
|
_url = host_domain + "/flow/getFlowDetail"
|
11
14
|
headers = {
|
12
15
|
"cookie": cookies
|
@@ -19,8 +22,11 @@ def get_current_flow(host_domain, cookies, flow_id):
|
|
19
22
|
result = json.loads(requests.request(method="get", url=_url, headers=headers, params=params).text)
|
20
23
|
# 按节点id存储
|
21
24
|
node_counts = []
|
25
|
+
get_email_content = kwargs.get("get_email_content", False)
|
26
|
+
email_contents = []
|
22
27
|
|
23
|
-
def process_node(node):
|
28
|
+
def process_node(node, split_num=-1):
|
29
|
+
split_num += 1
|
24
30
|
node_counts.append({node["id"]: {"completedCount": node["data"]["completedCount"],
|
25
31
|
"skippedCount": node["data"]["skippedCount"],
|
26
32
|
"openUserCount": node["data"]["openUserCount"],
|
@@ -29,23 +35,29 @@ def get_current_flow(host_domain, cookies, flow_id):
|
|
29
35
|
}
|
30
36
|
}
|
31
37
|
)
|
38
|
+
# 提取邮件内容
|
39
|
+
if get_email_content and node["type"] == "sendLetter":
|
40
|
+
email_contents.append({node["data"]["sendLetter"]["emailName"]: {
|
41
|
+
"receiveAddress": node["data"]["sendLetter"]["receiveAddress"],
|
42
|
+
"sender": node["data"]["sendLetter"]["sender"],
|
43
|
+
}})
|
32
44
|
# 处理split节点
|
33
45
|
if "split" in node["data"].keys():
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
# 处理abTesting节点
|
39
|
-
elif "abTesting" in node["data"].keys():
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
46
|
+
if splits is not None:
|
47
|
+
split_branch = node['data']['split']['branches'][splits[split_num]]
|
48
|
+
for branch_node in split_branch:
|
49
|
+
process_node(branch_node, split_num)
|
50
|
+
# # 处理abTesting节点
|
51
|
+
# elif "abTesting" in node["data"].keys():
|
52
|
+
# for branch_node in node['data']['abTesting']['branches']["a"]:
|
53
|
+
# process_node(branch_node)
|
54
|
+
# for branch_node in node['data']['abTesting']['branches']["b"]:
|
55
|
+
# process_node(branch_node)
|
44
56
|
|
45
57
|
# 处理所有顶层节点
|
46
58
|
for node in result['resultData']['nodes']:
|
47
|
-
process_node(node)
|
48
|
-
return node_counts, result["resultData"]["version"]
|
59
|
+
process_node(node=node)
|
60
|
+
return node_counts, result["resultData"]["version"], email_contents if get_email_content else None
|
49
61
|
|
50
62
|
|
51
63
|
def update_flow(host_domain, cookies, **kwargs):
|
@@ -108,24 +120,27 @@ def check_flow(host_domain, cookies, mock_domain="", **kwargs):
|
|
108
120
|
cookies:必填,sp登录态
|
109
121
|
flow_id:必填
|
110
122
|
pulsar:必填,模拟的触发数据
|
111
|
-
|
123
|
+
split_steps: 默认为all,需拆分步骤时填写,枚举:all、one、two;
|
112
124
|
one:获取旧节点数据和触发;
|
113
125
|
two:获取触发后数据和断言节点数据
|
114
126
|
|
127
|
+
old_flow_counts: 拆分两步时步骤二必填,内容为步骤一的返回值
|
115
128
|
limit:非必填,默认为1 - mock_pulsar函数用于控制模拟触发的次数
|
116
129
|
sleep_time: 非必填, 默认60s, 等待时间,用于触发后等待各节点计数后获取新数据
|
117
130
|
update_flow_params: 非必填,dict格式,需更新flow时传参,参数结构为sp的saveFlow接口内容
|
118
131
|
num:非必填,默认为1 - compare_lists函数用于断言方法做差值计算
|
119
132
|
all_key: 非必填,bool,默认false,输入true时,检查指标节点常用5个字段
|
120
133
|
check_key: 非必填, 默认只有completedCount, list格式,传入需检查节点的指标key,如:completedCount、skippedCount、openRate等
|
134
|
+
split_node: list,有拆分节点时需填,结构:如: ["false", "true"],即走到拆分节点限制不满足分支再走满足分支
|
121
135
|
"""
|
122
136
|
# todo: 还差邮件校验部分,后续补充
|
123
137
|
is_split_steps = kwargs.get("split_steps", "all")
|
124
138
|
# 步骤1 - 所需字段:split_steps、host_domain、cookies、flow_id、pulsar
|
125
139
|
if is_split_steps == "one" or is_split_steps == "all":
|
126
140
|
# 触发前提取flow数据,后续做对比
|
127
|
-
old_flow_counts, old_versions = get_current_flow(host_domain=host_domain, cookies=cookies,
|
128
|
-
flow_id=kwargs["flow_id"]
|
141
|
+
old_flow_counts, old_versions, _ = get_current_flow(host_domain=host_domain, cookies=cookies,
|
142
|
+
flow_id=kwargs["flow_id"],
|
143
|
+
splits=kwargs.get("split_node", None))
|
129
144
|
kwargs["old_flow_counts"] = old_flow_counts
|
130
145
|
# 更新flow
|
131
146
|
if kwargs.get("update_flow_params", False):
|
@@ -143,11 +158,13 @@ def check_flow(host_domain, cookies, mock_domain="", **kwargs):
|
|
143
158
|
if is_split_steps == "all":
|
144
159
|
time.sleep(kwargs.get("sleep_time", 60))
|
145
160
|
# 触发后提取flow数据,做断言
|
146
|
-
new_flow_counts, new_versions = get_current_flow(host_domain=host_domain, cookies=cookies,
|
147
|
-
flow_id=kwargs["flow_id"]
|
161
|
+
new_flow_counts, new_versions, email_contents = get_current_flow(host_domain=host_domain, cookies=cookies,
|
162
|
+
flow_id=kwargs["flow_id"],
|
163
|
+
splits=kwargs.get("split_node", None),
|
164
|
+
get_email_content=kwargs.get("get_email_content", False))
|
148
165
|
# 断言
|
149
166
|
result = ListDictUtils.compare_lists(temp1=kwargs.get("old_flow_counts"),
|
150
167
|
temp2=new_flow_counts, num=kwargs.get("num", 1),
|
151
168
|
check_key=kwargs.get("check_key", ["completedCount"]),
|
152
169
|
all_key=kwargs.get("all_key", False))
|
153
|
-
return [True, "断言成功"] if len(result) == 0 else [False, result]
|
170
|
+
return [True, "断言成功"] if len(result) == 0 else [False, result], email_contents
|
@@ -0,0 +1,207 @@
|
|
1
|
+
# -*- codeing = utf-8 -*-
|
2
|
+
# @Time :2025/2/20 00:27
|
3
|
+
# @Author :luzebin
|
4
|
+
import json
|
5
|
+
import re
|
6
|
+
import time
|
7
|
+
|
8
|
+
import pandas as pd
|
9
|
+
|
10
|
+
from smartpush.export.basic import ExcelExportChecker
|
11
|
+
from smartpush.export.basic.ReadExcel import read_excel_from_oss
|
12
|
+
from smartpush.export.basic.ReadExcel import read_excel_and_write_to_dict
|
13
|
+
from smartpush.export.basic.GetOssUrl import get_oss_address_with_retry
|
14
|
+
from smartpush.utils.DataTypeUtils import DataTypeUtils
|
15
|
+
from smartpush.flow import MockFlow
|
16
|
+
from smartpush.utils import EmailUtlis
|
17
|
+
|
18
|
+
if __name__ == '__main__':
|
19
|
+
# 导出流程
|
20
|
+
oss1 = "https://cdn.smartpushedm.com/material_ec2/2025-02-26/31c1a577af244c65ab9f9a984c64f3d9/ab%E5%BC%B9%E7%AA%97%E6%B5%8B%E8%AF%952.10%E5%88%9B%E5%BB%BA-%E6%9C%89%E5%85%A8%E9%83%A8%E6%95%B0%E6%8D%AE%E9%94%80%E5%94%AE%E9%A2%9D%E6%98%8E%E7%BB%86%E6%95%B0%E6%8D%AE.xlsx"
|
21
|
+
oss2 = "https://cdn.smartpushedm.com/material_ec2/2025-02-26/31c1a577af244c65ab9f9a984c64f3d9/ab%E5%BC%B9%E7%AA%97%E6%B5%8B%E8%AF%952.10%E5%88%9B%E5%BB%BA-%E6%9C%89%E5%85%A8%E9%83%A8%E6%95%B0%E6%8D%AE%E9%94%80%E5%94%AE%E9%A2%9D%E6%98%8E%E7%BB%86%E6%95%B0%E6%8D%AE.xlsx"
|
22
|
+
# # print(check_excel_all(oss1, oss1))
|
23
|
+
oss3 = "https://cdn.smartpushedm.com/material_ec2/2025-03-07/dca03e35cb074ac2a46935c85de9f510/导出全部客户.csv"
|
24
|
+
oss4 = "https://cdn.smartpushedm.com/material_ec2/2025-03-07/c5fa0cc24d05416e93579266910fbd3e/%E5%AF%BC%E5%87%BA%E5%85%A8%E9%83%A8%E5%AE%A2%E6%88%B7.csv"
|
25
|
+
expected_oss = "https://cdn.smartpushedm.com/material_ec2/2025-02-26/757df7e77ce544e193257c0da35a4983/%E3%80%90%E8%87%AA%E5%8A%A8%E5%8C%96%E5%AF%BC%E5%87%BA%E3%80%91%E8%90%A5%E9%94%80%E6%B4%BB%E5%8A%A8%E6%95%B0%E6%8D%AE%E6%A6%82%E8%A7%88.xlsx"
|
26
|
+
# actual_oss = "https://cdn.smartpushedm.com/material_ec2/2025-02-26/757df7e77ce544e193257c0da35a4983/%E3%80%90%E8%87%AA%E5%8A%A8%E5%8C%96%E5%AF%BC%E5%87%BA%E3%80%91%E8%90%A5%E9%94%80%E6%B4%BB%E5%8A%A8%E6%95%B0%E6%8D%AE%E6%A6%82%E8%A7%88.xlsx"
|
27
|
+
url = "https://cdn.smartpushedm.com/material_ec2_prod/2025-03-06/fe6f042f50884466979155c5ef825736/copy%20of%202025-01-16%20%E5%88%9B%E5%BB%BA%E7%9A%84%20A%2FB%20%E6%B5%8B%E8%AF%95%20copy%20of%202025-01-16%20app-%E6%99%AE%E9%80%9A%E6%A8%A1%E6%9D%BF%201%E6%95%B0%E6%8D%AE%E6%80%BB%E8%A7%88.xlsx"
|
28
|
+
|
29
|
+
# e_person_oss1 = "https://cdn.smartpushedm.com/material_ec2/2025-02-27/b48f34b3e88045d189631ec1f0f23d51/%E5%AF%BC%E5%87%BA%E5%85%A8%E9%83%A8%E5%AE%A2%E6%88%B7.csv"
|
30
|
+
# a_person_oss2 = "https://cdn.smartpushedm.com/material_ec2/2025-02-27/c50519d803c04e3b9b52d9f625fed413/%E5%AF%BC%E5%87%BA%E5%85%A8%E9%83%A8%E5%AE%A2%E6%88%B7.csv"
|
31
|
+
|
32
|
+
# # #actual_oss= get_oss_address_with_retry("23161","https://cdn.smartpushedm.com/material_ec2_prod/2025-02-20/dae941ec20964ca5b106407858676f89/%E7%BE%A4%E7%BB%84%E6%95%B0%E6%8D%AE%E6%A6%82%E8%A7%88.xlsx","",'{"page":1,"pageSize":10,"type":null,"status":null,"startTime":null,"endTime":null}')
|
33
|
+
# # res=read_excel_and_write_to_dict(read_excel_from_oss(actual_oss))
|
34
|
+
# # print(res)
|
35
|
+
# # print(read_excel_and_write_to_dict(read_excel_from_oss(oss1), type=".xlsx"))
|
36
|
+
# print(check_excel(check_type="all", actual_oss=actual_oss, expected_oss=expected_oss))
|
37
|
+
# print(check_excel_all(actual_oss=oss1, expected_oss=oss2,skiprows =1))
|
38
|
+
# print(check_excel_all(actual_oss=oss1, expected_oss=oss2,ignore_sort=True))
|
39
|
+
# print(check_excel_all(actual_oss=a_person_oss2, expected_oss=e_person_oss1, check_type="including"))
|
40
|
+
# print(ExcelExportChecker.check_excel_all(actual_oss=oss3, expected_oss=oss4, check_type="including"))
|
41
|
+
# read_excel_csv_data(type=)
|
42
|
+
# print(DataTypeUtils().check_email_format())
|
43
|
+
# errors = ExcelExportChecker.check_field_format(actual_oss=oss1, fileds={0: {5: "time"}}, skiprows=1)
|
44
|
+
# ExcelExportChecker.check_excel_name(actual_oss=oss1, expected_oss=url)
|
45
|
+
|
46
|
+
# flow触发流程 ------------------------------------------------------------------------------------------------------------------------
|
47
|
+
_url = "http://sp-go-flow-test.inshopline.com"
|
48
|
+
host_domain = "https://test.smartpushedm.com/api-em-ec2"
|
49
|
+
cookies = "_ga=GA1.1.88071637.1717860341; _ga_NE61JB8ZM6=GS1.1.1718954972.32.1.1718954972.0.0.0; _ga_Z8N3C69PPP=GS1.1.1723104149.2.0.1723104149.0.0.0; _ga_D2KXR23WN3=GS1.1.1735096783.3.1.1735096812.0.0.0; osudb_lang=; osudb_oar=#01#SID0000127BMP3Os96/37rp7Et7tYy+s7TyyN/AaKNkLtst/Ks9rPF/Co/OjyNJYL+Y4lPf+p9rzrSk9uJnxx4BFXI04BoU/fxhnvaMH2ac1DoeYo7Ll0eizFs+CGNscHjBENqjUacTEcDHSprmyG4TrNfYJkB; osudb_appid=SMARTPUSH; osudb_subappid=1; osudb_uid=4213785247; a_lang=zh-hant-tw; ecom_http_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NDkyNjM1NzgsImp0aSI6IjIyYmQwNmE3LTVkYTItNDA4OS05NGViLThlNThlNzdhM2MyOSIsInVzZXJJbmZvIjp7ImlkIjowLCJ1c2VySWQiOiI0MjEzNzg1MjQ3IiwidXNlcm5hbWUiOiIiLCJlbWFpbCI6ImZlbGl4LnNoYW9Ac2hvcGxpbmVhcHAuY29tIiwidXNlclJvbGUiOiJvd25lciIsInBsYXRmb3JtVHlwZSI6Nywic3ViUGxhdGZvcm0iOjEsInBob25lIjoiIiwibGFuZ3VhZ2UiOiJ6aC1oYW50LXR3IiwiYXV0aFR5cGUiOiIiLCJhdHRyaWJ1dGVzIjp7ImNvdW50cnlDb2RlIjoiQ04iLCJjdXJyZW5jeSI6IkpQWSIsImN1cnJlbmN5U3ltYm9sIjoiSlDCpSIsImRvbWFpbiI6InNtYXJ0cHVzaDQubXlzaG9wbGluZXN0Zy5jb20iLCJsYW5ndWFnZSI6ImVuIiwibWVyY2hhbnRFbWFpbCI6ImZlbGl4LnNoYW9Ac2hvcGxpbmUuY29tIiwibWVyY2hhbnROYW1lIjoiU21hcnRQdXNoNF9lYzJf6Ieq5Yqo5YyW5bqX6ZO6IiwicGhvbmUiOiIiLCJzY29wZUNoYW5nZWQiOnRydWUsInN0YWZmTGFuZ3VhZ2UiOiJ6aC1oYW5zLWNuIiwic3RhdHVzIjowLCJ0aW1lem9uZSI6IkFzaWEvTWFjYW8ifSwic3RvcmVJZCI6IjE2NDQzOTU5MjA0NDQiLCJoYW5kbGUiOiJzbWFydHB1c2g0IiwiZW52IjoiQ04iLCJzdGUiOiIiLCJ2ZXJpZnkiOiIifSwibG9naW5UaW1lIjoxNzQ2NjcxNTc4OTU4LCJzY29wZSI6WyJlbWFpbC1tYXJrZXQiLCJjb29raWUiLCJzbC1lY29tLWVtYWlsLW1hcmtldC1uZXctdGVzdCIsImVtYWlsLW1hcmtldC1uZXctZGV2LWZzIiwiYXBpLXVjLWVjMiIsImFwaS1zdS1lYzIiLCJhcGktZW0tZWMyIiwiZmxvdy1wbHVnaW4iLCJhcGktc3AtbWFya2V0LWVjMiJdLCJjbGllbnRfaWQiOiJlbWFpbC1tYXJrZXQifQ.Ym_w8ftfdP3zxVXpK_ZlPbWRI-S3ie46_zMCVJZln_Y; JSESSIONID=00A6B90F793A7392A2398A80CA278359"
|
50
|
+
|
51
|
+
params = {
|
52
|
+
"abandonedOrderId": "c2c4a695a36373f56899b370d0f1b6f2",
|
53
|
+
"areaCode": "",
|
54
|
+
"context": {
|
55
|
+
"order": {
|
56
|
+
"buyerSubscribeEmail": True,
|
57
|
+
"checkoutId": "c2c4a695a36373f56899b370d0f1b6f2",
|
58
|
+
"discountCodes": [],
|
59
|
+
"orderAmountSet": {
|
60
|
+
"amount": 3,
|
61
|
+
"currency": "JPY"
|
62
|
+
},
|
63
|
+
"orderDetails": [
|
64
|
+
{
|
65
|
+
"productId": "16060724900402692190790343",
|
66
|
+
"title": "测试2.0-商品同步AutoSync-2023-08-17 20:52:00",
|
67
|
+
"titleTranslations": []
|
68
|
+
}
|
69
|
+
],
|
70
|
+
"receiverCountryCode": "HK"
|
71
|
+
},
|
72
|
+
"user": {
|
73
|
+
"addresses": [],
|
74
|
+
"areaCode": "",
|
75
|
+
"email": "testsmart200+10@gmail.com",
|
76
|
+
"firstName": "testsmart200+10",
|
77
|
+
"gender": "others",
|
78
|
+
"id": "1911625831177650177",
|
79
|
+
"lastName": "",
|
80
|
+
"phone": "",
|
81
|
+
"tags": [],
|
82
|
+
"uid": "4603296300",
|
83
|
+
"userName": "testsmart200+10"
|
84
|
+
}
|
85
|
+
},
|
86
|
+
"controlObjectId": "c2c4a695a36373f56899b370d0f1b6f2",
|
87
|
+
"controlObjectType": 4,
|
88
|
+
"email": "testsmart200+10@gmail.com",
|
89
|
+
"handle": "smartpush4",
|
90
|
+
"language": "en",
|
91
|
+
"messageId": "1911625832100397058",
|
92
|
+
"phone": "",
|
93
|
+
"platform": 4,
|
94
|
+
"storeId": "1644395920444",
|
95
|
+
"timezone": "Asia/Macao",
|
96
|
+
"triggerId": "c1001",
|
97
|
+
"uid": "4603296300",
|
98
|
+
"userId": "1911625831177650177"
|
99
|
+
}
|
100
|
+
update_flow_params = {"id": "FLOW6941975456855532553", "version": "10", "triggerId": "c1001",
|
101
|
+
"templateId": "TEMP6911595896571704333", "showData": False, "flowChange": True, "nodes": [
|
102
|
+
{"type": "trigger", "data": {
|
103
|
+
"trigger": {"trigger": "c1001", "group": "", "suggestionGroupId": "", "triggerStock": False,
|
104
|
+
"completedCount": 4, "skippedCount": 0}, "completedCount": 4, "skippedCount": 0},
|
105
|
+
"id": "92d115e7-8a86-439a-8cfb-1aa3ef075edf"}, {"type": "delay", "data": {
|
106
|
+
"delay": {"type": "relative", "relativeTime": 0, "relativeUnit": "HOURS", "designatedTime": ""},
|
107
|
+
"completedCount": 4}, "id": "e0fc258b-fcfc-421c-b215-8e41638072ca"}, {"type": "sendLetter", "data": {
|
108
|
+
"sendLetter": {"id": 367462, "activityTemplateId": 367462, "activityName": "flowActivity_EwEi3d",
|
109
|
+
"activityImage": "http://cdn.smartpushedm.com/frontend/smart-push/staging/1644395920444/1744102089665/1744102093754_f99e3703.jpeg",
|
110
|
+
"emailName": "A Message from Your Cart", "merchantId": "1644395920444",
|
111
|
+
"merchantName": "SmartPush4_ec2_自动化店铺",
|
112
|
+
"brandName": "SmartPush4_ec2_自动化店铺 AutoTestName", "currency": "JP¥",
|
113
|
+
"activityType": "NORMAL", "activityStatus": "ACTIVE", "createTime": 1745201732286,
|
114
|
+
"updateTime": 1745201825819, "createDate": "2025-04-21 10:15:32",
|
115
|
+
"updateDate": "2025-04-21 10:17:05", "pickContactPacks": [], "excludeContactPacks": [],
|
116
|
+
"customerGroupIds": [], "excludeCustomerGroupIds": [], "pickContactInfos": [],
|
117
|
+
"excludeContactInfos": [], "customerGroupInfos": [], "excludeCustomerGroupInfos": [],
|
118
|
+
"sender": "SmartPush4_ec2_自动化店铺", "senderDomain": "DEFAULT_DOMAIN", "domainType": 3,
|
119
|
+
"receiveAddress": "", "originTemplate": 33,
|
120
|
+
"currentJsonSchema": "{\"id\":\"a4a9fba2a\",\"type\":\"Stage\",\"props\":{\"backgroundColor\":\"#EAEDF1\",\"width\":\"600px\",\"fullWidth\":\"normal-width\"},\"children\":[{\"id\":\"84ba788da\",\"type\":\"Header\",\"props\":{\"backgroundColor\":\"#ffffff\",\"borderLeft\":\"1px none #ffffff\",\"borderRight\":\"1px none #ffffff\",\"borderTop\":\"1px none #ffffff\",\"borderBottom\":\"1px none #ffffff\",\"paddingTop\":\"0px\",\"paddingBottom\":\"0px\",\"paddingLeft\":\"0px\",\"paddingRight\":\"0px\",\"cols\":[12]},\"children\":[{\"id\":\"98d909a48\",\"type\":\"Column\",\"props\":{},\"children\":[]}]},{\"id\":\"84ba7bbda\",\"type\":\"Section\",\"props\":{\"backgroundColor\":\"#ffffff\",\"borderLeft\":\"1px none #ffffff\",\"borderRight\":\"1px none #ffffff\",\"borderTop\":\"1px none #ffffff\",\"borderBottom\":\"1px none #ffffff\",\"paddingTop\":\"0px\",\"paddingBottom\":\"0px\",\"paddingLeft\":\"0px\",\"paddingRight\":\"0px\",\"cols\":[12]},\"children\":[{\"id\":\"8cab9aa48\",\"type\":\"Column\",\"props\":{},\"children\":[]}]},{\"id\":\"b8bbabad9\",\"type\":\"Footer\",\"props\":{\"backgroundColor\":\"#ffffff\",\"borderLeft\":\"1px none #ffffff\",\"borderRight\":\"1px none #ffffff\",\"borderTop\":\"1px none #ffffff\",\"borderBottom\":\"1px none #ffffff\",\"paddingTop\":\"0px\",\"paddingBottom\":\"0px\",\"paddingLeft\":\"0px\",\"paddingRight\":\"0px\",\"cols\":[12]},\"children\":[{\"id\":\"b3bcabad7\",\"type\":\"Column\",\"props\":{},\"children\":[{\"id\":\"b39b6a94a\",\"type\":\"Subscribe\",\"props\":{\"content\":\"<p style=\\\"text-align:center;\\\"><span style=\\\"font-size:12px\\\"><span style=\\\"font-family:Arial, Helvetica, sans-serif\\\">在此處輸入聯繫地址,可以讓你的顧客更加信任這封郵件</span></span></p>\"},\"children\":[]}]}]}],\"extend\":{\"version\":\"1.0.0\",\"updateTime\":\"2025-03-18T09:57:40.953Z\"}}",
|
121
|
+
"currentHtml": "<!doctype html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xmlns:v=\"urn:schemas-microsoft-com:vml\" xmlns:o=\"urn:schemas-microsoft-com:office:office\">\n <head>\n <title></title>\n <!--[if !mso]><!-->\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n <!--<![endif]-->\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n <style type=\"text/css\">\n #outlook a { padding:0; }\n body { margin:0;padding:0;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%; }\n table, td { border-collapse:collapse;mso-table-lspace:0pt;mso-table-rspace:0pt; }\n img { border:0;line-height:100%; outline:none;text-decoration:none;-ms-interpolation-mode:bicubic; }\n pre{margin: 0;}p{ display: block;margin:0;}\n </style>\n <!--[if mso]>\n <noscript>\n <xml>\n <o:OfficeDocumentSettings>\n <o:AllowPNG/>\n <o:PixelsPerInch>96</o:PixelsPerInch>\n </o:OfficeDocumentSettings>\n </xml>\n </noscript>\n <![endif]-->\n <!--[if lte mso 11]>\n <style type=\"text/css\">\n .mj-outlook-group-fix { width:100% !important; }\n </style>\n <![endif]-->\n \n <!--[if !mso]><!-->\n <link href=\"https://fonts.googleapis.com/css?family=Ubuntu:300,400,500,700\" rel=\"stylesheet\" type=\"text/css\">\n <style type=\"text/css\">\n @import url(https://fonts.googleapis.com/css?family=Ubuntu:300,400,500,700);\n </style>\n <!--<![endif]-->\n\n \n \n <style type=\"text/css\">\n @media only screen and (min-width:480px) {\n .mj-column-per-100 { width:100% !important; max-width: 100%; }\n }\n </style>\n <style media=\"screen and (min-width:480px)\">\n .moz-text-html .mj-column-per-100 { width:100% !important; max-width: 100%; }\n </style>\n \n \n <style type=\"text/css\">\n \n \n </style>\n <style type=\"text/css\">\n @import url(https://fonts.googleapis.com/css?family=Arvo:400|Bodoni+Moda:400|DM+Sans:400|Poppins:400|Hammersmith+One:400|Libre+Baskerville:400|Lexend+Giga:400|Ubuntu:400|Montserrat:400|Nunito:400|News+Cycle:400|Roboto:400|Oswald:400);@import url(https://fonts.googleapis.com/css?family=Asar:400|Bruno+Ace:400|Cantata+One:400|League+Gothic:400|Long+Cang:400|Lovers+Quarrel:400|Nanum+Gothic+Coding:400|Nanum+Myeongjo:400|Noto+Sans+Kaithi:400|Noto+Sans+Kannada:400|Noto+Sans+Math:400|Noto+Sans+Syloti+Nagri:400|Noto+Serif+JP:400|Playwrite+AT+Guides:400|Saira+Extra+Condensed:400|Tsukimi+Rounded:400|Waiting+for+the+Sunrise:400);h1,\nh2,\nh3,\nh4,\nh5 {\n font-weight: bold;\n margin-bottom: 0;\n}\np {\n margin-top: 0;\n margin-bottom: 0;\n min-height: 1em;\n}\n\nul {\n margin-bottom: 0;\n}\n\nth {\n font-weight: bold;\n}\n\na {\n text-decoration: none;\n}\n\na::-webkit-scrollbar {\n -webkit-appearance: none;\n}\n\na::-webkit-scrollbar:horizontal {\n max-height: 8px;\n}\n\na::-webkit-scrollbar-thumb {\n border-radius: 8px;\n background-color: rgba(0, 0, 0, 0.5);\n}\n\nul,\nol,\ndl {\n margin-top: 16px !important;\n}\n\npre {\n word-break: break-word;\n padding: 0;\n margin: 0;\n white-space: inherit !important;\n}\n\npre p {\n word-break: break-word;\n padding: 0;\n margin: 0;\n color: #000000;\n}\n\nspan[style*='color'] a {\n color: inherit;\n}\n\n.mj-column-no-meida-100{\n width: 100% !important;\n}\n.mj-column-no-meida-50{\n width: 50% !important;\n}\n.mj-column-no-meida-33-333333333333336{\n width: 33.333333333333336% !important;\n}\n.mj-column-no-meida-25{\n width: 25% !important;\n}\n\n.white-nowrap {\n white-space: nowrap !important;\n}\n\n/* 间距 */\n.sp-m-p-0 {\n margin: 0;\n padding: 0;\n}\n\n.nps-content-span a {\n color: inherit !important;\n}.sp-font-12 {\n font-size: 12px !important;\n}\n\n.sp-font-14 {\n font-size: 14px !important;\n}\n\n.sp-font-16 {\n font-size: 16px !important;\n}\n\n.sp-font-18 {\n font-size: 18px !important;\n}\n\n.sp-font-20 {\n font-size: 20px !important;\n}\n\n.sp-font-22 {\n font-size: 22px !important;\n}\n\n.sp-font-24 {\n font-size: 24px !important;\n}\n\n.sp-font-26 {\n font-size: 26px !important;\n}\n\n.sp-font-28 {\n font-size: 28px !important;\n}\n\n.sp-font-30 {\n font-size: 30px !important;\n}\n\n.sp-font-32 {\n font-size: 32px !important;\n}\n\n.sp-font-34 {\n font-size: 34px !important;\n}\n\n.sp-font-36 {\n font-size: 36px !important;\n}\n\n.sp-font-38 {\n font-size: 38px !important;\n}\n\n.sp-font-40 {\n font-size: 40px !important;\n}\n\n.sp-font-42 {\n font-size: 42px !important;\n}\n\n.sp-font-44 {\n font-size: 44px !important;\n}\n\n.sp-font-46 {\n font-size: 46px !important;\n}\n\n.sp-font-48 {\n font-size: 48px !important;\n}\n\n.sp-font-50 {\n font-size: 50px !important;\n}\n\n.sp-font-52 {\n font-size: 52px !important;\n}\n\n.sp-font-54 {\n font-size: 54px !important;\n}\n\n.sp-font-56 {\n font-size: 56px !important;\n}\n\n.sp-font-58 {\n font-size: 58px !important;\n}\n\n.sp-font-60 {\n font-size: 60px !important;\n}\n\n.sp-image-icon {\n width: 50px;\n}\n\n@media only screen and (max-width:600px) {\n\n .sp-font-12 {\n font-size: 12px !important;\n }\n\n .sp-font-14 {\n font-size: 12px !important;\n }\n\n .sp-font-16 {\n font-size: 12px !important;\n }\n\n .sp-font-18 {\n font-size: 13px !important;\n }\n\n .sp-font-20 {\n font-size: 15px !important;\n }\n\n .sp-font-22 {\n font-size: 16px !important;\n }\n\n .sp-font-24 {\n font-size: 18px !important;\n }\n\n .sp-font-26 {\n font-size: 19px !important;\n }\n\n .sp-font-28 {\n font-size: 21px !important;\n }\n\n .sp-font-30 {\n font-size: 22px !important;\n }\n\n .sp-font-32 {\n font-size: 24px !important;\n }\n\n .sp-font-34 {\n font-size: 25px !important;\n }\n\n .sp-font-36 {\n font-size: 27px !important;\n }\n\n .sp-font-38 {\n font-size: 28px !important;\n }\n\n .sp-font-40 {\n font-size: 30px !important;\n }\n\n .sp-font-42 {\n font-size: 31px !important;\n }\n\n .sp-font-44 {\n font-size: 32px !important;\n }\n\n .sp-font-46 {\n font-size: 33px !important;\n }\n\n .sp-font-48 {\n font-size: 34px !important;\n }\n\n .sp-font-50 {\n font-size: 35px !important;\n }\n\n .sp-font-52 {\n font-size: 36px !important;\n }\n\n .sp-font-54 {\n font-size: 37px !important;\n }\n\n .sp-font-56 {\n font-size: 38px !important;\n }\n\n .sp-font-58 {\n font-size: 39px !important;\n }\n\n .sp-font-60 {\n font-size: 40px !important;\n }\n\n .sp-image-icon {\n width: 28px !important;\n }\n\n}@media only screen and (max-width:480px) {\n\n .sp-img-h-1-TwoVertical-11,\n .sp-img-h-1-TwoHorizontalColumns-11 {\n height: 170px !important;\n }\n\n .sp-img-h-1-TwoVertical-23,\n .sp-img-h-1-TwoHorizontalColumns-23 {\n height: 243px !important;\n }\n\n .sp-img-h-1-TwoVertical-34,\n .sp-img-h-1-TwoHorizontalColumns-34 {\n height: 227px !important;\n }\n\n .sp-img-h-1-TwoVertical-43,\n .sp-img-h-1-TwoHorizontalColumns-43 {\n height: 127px !important;\n }\n\n .sp-img-h-1-ThreeHorizontalColumns-11 {\n height: 109px !important;\n }\n\n .sp-img-h-1-ThreeHorizontalColumns-23 {\n height: 163px !important;\n }\n\n .sp-img-h-1-ThreeHorizontalColumns-34 {\n height: 145px !important;\n }\n\n .sp-img-h-1-ThreeHorizontalColumns-43 {\n height: 81px !important;\n }\n\n .sp-img-h-2-TwoVertical-11 {\n height: 164px !important;\n }\n\n .sp-img-h-2-TwoVertical-23 {\n height: 246px !important;\n }\n\n .sp-img-h-2-TwoVertical-34 {\n height: 218px !important;\n }\n\n .sp-img-h-2-TwoVertical-43 {\n height: 123px !important;\n }\n\n .sp-img-h-2-ThreeHorizontalColumns-11,\n .sp-img-h-2-TwoHorizontalColumns-11 {\n height: 76px !important;\n }\n\n .sp-img-h-2-ThreeHorizontalColumns-23,\n .sp-img-h-2-TwoHorizontalColumns-23 {\n height: 113px !important;\n }\n\n .sp-img-h-2-ThreeHorizontalColumns-34,\n .sp-img-h-2-TwoHorizontalColumns-34 {\n height: 101px !important;\n }\n\n .sp-img-h-2-ThreeHorizontalColumns-43,\n .sp-img-h-2-TwoHorizontalColumns-43 {\n height: 57px !important;\n }\n}@media only screen and (min-width: 320px) and (max-width: 599px) {\n .mj-w-50 {\n width: 50% !important;\n max-width: 50%;\n }\n}\n\n@media only screen and (max-width: 480px) {\n .shop-white-mobile {\n width: 100% !important;\n }\n .mj-td-force-100{\n display: inline-block;\n width: 100% !important;\n }\n\n .mj-ImageText-screen {\n width: 100% !important;\n }\n .mj-ImageText-img {\n margin: 0 auto;\n }\n\n .mj-ImageText-margin {\n margin: 0 !important;\n }\n\n .mj-ImageText-margin-zero {\n margin: 0 5px 0 0 !important;\n }\n\n .mj-ImageText-margin-one {\n margin: 0 0 0 5px !important;\n }\n .mj-column-per-50-force {\n width: 50% !important;\n max-width: 50%;\n }\n}\n\n@media only screen and (min-width: 480px) {\n .mj-imagetext-force-100{\n display: inline-block;\n width: 100% !important;\n }\n .mj-column-per-100 {\n width: 100% !important;\n max-width: 100%;\n }\n\n .mj-column-per-50 {\n width: 50% !important;\n max-width: 50%;\n }\n\n .mj-column-per-33-333333333333336 {\n width: 33.333333333333336% !important;\n max-width: 33.333333333333336%;\n }\n\n .mj-column-per-25 {\n width: 25% !important;\n max-width: 25%;\n }\n\n\n .mg-column-per-46-5 {\n width: 46.5% !important;\n max-width: 46.5%;\n }\n\n .mj-AbandonProduct-cloum-align-center {\n align-items: flex-start !important;\n }\n\n\n .mj-OrderInformation-padding-top-220 {\n padding-top: 20px !important;\n }\n\n .mj-OrderInformation-float-left {\n float: left !important;\n }\n}@media only screen and (max-width: 480px) {\n .mt-1{\n margin-top: 1px;\n }\n .mt-2{\n margin-top: 2px;\n }\n .mt-3{\n margin-top: 3px;\n }\n .mt-4{\n margin-top: 4px;\n }\n .mt-5{\n margin-top: 5px;\n }\n .mt-6{\n margin-top: 7px;\n }\n .mt-8{\n margin-top: 9px;\n }\n .mt-10{\n margin-top: 10px;\n }\n\n}\n </style>\n \n </head>\n <body style=\"word-spacing:normal;background-color:#EAEDF1;\">\n \n \n <div\n style=\"background-color:#EAEDF1;\"\n >\n <table className=\"pv-stage\">\n <tbody>\n <tr>\n <td style=\"display:table-column;\"><div style=\"width:1px; height:1px;\"><img style=\"width:1px; height:1px;\" width=\"1\" src=\"${SP_OPEN_EMAIL_URL}\" />\n </div></td>\n </tr>\n </tbody>\n </table><div mso-hide: all; position: fixed; height: 0; max-height: 0; overflow: hidden; font-size: 0; style=\"display:none;\">${emailSubtitle}</div>\n \n <!--[if mso | IE]><table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"\" role=\"presentation\" style=\"width:600px;\" width=\"600\" bgcolor=\"#ffffff\" ><tr><td style=\"line-height:0px;font-size:0px;mso-line-height-rule:exactly;\"><![endif]-->\n \n \n <div style=\"background:#ffffff;background-color:#ffffff;margin:0px auto;max-width:600px;\">\n \n <table\n align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" role=\"presentation\" style=\"background:#ffffff;background-color:#ffffff;width:100%;\"\n >\n <tbody>\n <tr>\n <td\n style=\"border-bottom:1px none #ffffff;border-left:1px none #ffffff;border-right:1px none #ffffff;border-top:1px none #ffffff;direction:ltr;font-size:0px;padding:20px 0;padding-bottom:0px;padding-left:0px;padding-right:0px;padding-top:0px;text-align:center;\"\n >\n <!--[if mso | IE]><table role=\"presentation\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr><td class=\"\" style=\"vertical-align:top;width:598px;\" ><![endif]-->\n \n <div\n class=\"mj-column-per-100 mj-outlook-group-fix\" style=\"font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;\"\n >\n \n <table\n border=\"0\" cellpadding=\"0\" cellspacing=\"0\" role=\"presentation\" style=\"vertical-align:top;\" width=\"100%\"\n >\n <tbody>\n \n <tr>\n <td\n align=\"left\" style=\"font-size:0px;padding:0;word-break:break-word;\"\n >\n \n <table\n cellpadding=\"0\" cellspacing=\"0\" width=\"100%\" border=\"0\" style=\"color:#000000;font-family:Ubuntu, Helvetica, Arial, sans-serif;font-size:13px;line-height:22px;table-layout:fixed;width:100%;border:none;\"\n >\n <table style=\"margin:0;padding:0;width:100%;table-layout:fixed\" class=\"\" sp-id=\"subscribe-area-b39b6a94a\"><tbody><tr style=\"width:100%\"><td style=\"margin:0;padding:0;width:100%;text-align:center;padding-top:20px;padding-left:20px;padding-right:20px;padding-bottom:20px;background-color:transparent;font-family:arial,helvetica,sans-serif,Arial, Helvetica, sans-serif\" class=\"Subscribe\"><table cellPadding=\"0\" cellSpacing=\"0\" style=\"width:100%\"><tbody><tr><td align=\"center\" class=\"sp-font-16\" valign=\"middle\" style=\"padding-left:10px;padding-right:10px;padding-top:10px;text-align:left;font-size:16px\"><div><p style=\"text-align:center;\"><span style=\"font-size:12px\"><span style=\"font-family:Arial, Helvetica, sans-serif\">在此處輸入聯繫地址,可以讓你的顧客更加信任這封郵件</span></span></p></div></td></tr><tr><td align=\"center\" valign=\"middle\" height=\"20\" style=\"font-size:12px;font-family:arial,helvetica,sans-serif,Arial, Helvetica, sans-serif;padding-left:10px;padding-right:10px;padding-bottom:20px\"></td></tr><div><tr style=\"${hide_logo}\" sp-id=\"subscribe-dom-b39b6a94a\">\n <td class='sp-font-16' style=\"padding-left:20px;padding-right:20px;padding-top:20px;text-align:center;font-size:16px\" >\n <div style=\"border-top: 1px solid #EEF1F6\">\n <img src=\"https://cdn.smartpushedm.com/frontend/smart-push/product/image/1731577171577_83853d55.png\" style=\"padding: 10px;vertical-align: middle;width: 158px;\"alt=\"\" />\n </div>\n <p style=\"color:#343434;font-size:12px\">Providing content services for [[shopName]]</p>\n </td>\n </tr></div></tbody></table></td></tr></tbody></table>\n </table>\n \n </td>\n </tr>\n \n </tbody>\n </table>\n \n </div>\n \n <!--[if mso | IE]></td></tr></table><![endif]-->\n </td>\n </tr>\n </tbody>\n </table>\n \n </div>\n \n \n <!--[if mso | IE]></td></tr></table><![endif]-->\n \n \n </div>\n \n </body>\n</html>\n ",
|
122
|
+
"previewJsonSchema": "{\"id\":\"a4a9fba2a\",\"type\":\"Stage\",\"props\":{\"backgroundColor\":\"#EAEDF1\",\"width\":\"600px\",\"fullWidth\":\"normal-width\"},\"children\":[{\"id\":\"84ba788da\",\"type\":\"Header\",\"props\":{\"backgroundColor\":\"#ffffff\",\"borderLeft\":\"1px none #ffffff\",\"borderRight\":\"1px none #ffffff\",\"borderTop\":\"1px none #ffffff\",\"borderBottom\":\"1px none #ffffff\",\"paddingTop\":\"0px\",\"paddingBottom\":\"0px\",\"paddingLeft\":\"0px\",\"paddingRight\":\"0px\",\"cols\":[12]},\"children\":[{\"id\":\"98d909a48\",\"type\":\"Column\",\"props\":{},\"children\":[]}]},{\"id\":\"84ba7bbda\",\"type\":\"Section\",\"props\":{\"backgroundColor\":\"#ffffff\",\"borderLeft\":\"1px none #ffffff\",\"borderRight\":\"1px none #ffffff\",\"borderTop\":\"1px none #ffffff\",\"borderBottom\":\"1px none #ffffff\",\"paddingTop\":\"0px\",\"paddingBottom\":\"0px\",\"paddingLeft\":\"0px\",\"paddingRight\":\"0px\",\"cols\":[12]},\"children\":[{\"id\":\"8cab9aa48\",\"type\":\"Column\",\"props\":{},\"children\":[]}]},{\"id\":\"b8bbabad9\",\"type\":\"Footer\",\"props\":{\"backgroundColor\":\"#ffffff\",\"borderLeft\":\"1px none #ffffff\",\"borderRight\":\"1px none #ffffff\",\"borderTop\":\"1px none #ffffff\",\"borderBottom\":\"1px none #ffffff\",\"paddingTop\":\"0px\",\"paddingBottom\":\"0px\",\"paddingLeft\":\"0px\",\"paddingRight\":\"0px\",\"cols\":[12]},\"children\":[{\"id\":\"b3bcabad7\",\"type\":\"Column\",\"props\":{},\"children\":[{\"id\":\"b39b6a94a\",\"type\":\"Subscribe\",\"props\":{\"content\":\"<p style=\\\"text-align:center;\\\"><span style=\\\"font-size:12px\\\"><span style=\\\"font-family:Arial, Helvetica, sans-serif\\\">在此處輸入聯繫地址,可以讓你的顧客更加信任這封郵件</span></span></p>\"},\"children\":[]}]}]}],\"extend\":{\"version\":\"1.0.0\",\"updateTime\":\"2025-03-18T09:57:40.953Z\"}}",
|
123
|
+
"generatedHtml": False,
|
124
|
+
"templateUrl": "https://cdn2.smartpushedm.com/material/2021-11-29/d4f96fc873e942a397be708c932bbbe4-自定义排版.png",
|
125
|
+
"sendStrategy": "NOW", "totalReceiver": 0, "utmConfigEnable": False,
|
126
|
+
"subtitle": "Items in your cart are selling out fast!", "language": "en",
|
127
|
+
"languageName": "英语", "timezone": "Asia/Shanghai", "timezoneGmt": "GMT+08:00",
|
128
|
+
"type": "FLOW", "relId": "FLOW6941975456855532553",
|
129
|
+
"parentId": "TEMP6911595896571704333", "nodeId": "2503b475-ce3e-4906-ab04-0ebc387f0d7e",
|
130
|
+
"version": "10", "nodeOrder": 0, "sendType": "EMAIL", "productInfos": [], "blocks": [
|
131
|
+
{"domId": "subscribe-dom-b39b6a94a", "blockId": "", "areaId": "", "type": "SP_LOGO",
|
132
|
+
"column": 1, "fillStyle": 0, "ratio": ""}], "discountCodes": [], "reviews": [], "awards": [],
|
133
|
+
"selectProducts": [], "createSource": "BUILD_ACTIVITY", "contentChange": True,
|
134
|
+
"activityChange": False, "imageVersion": "1744102089665", "subActivityList": [],
|
135
|
+
"warmupPack": 0, "boosterEnabled": False, "smartSending": False, "boosterCreated": False,
|
136
|
+
"gmailPromotion": False, "sendTimeType": "FIXED", "sendTimezone": "B_TIMEZONE",
|
137
|
+
"sendTimeDelay": False, "sendOption": 1, "hasUserBlock": False, "hasAutoBlock": False,
|
138
|
+
"smsSendDelay": True, "payFunctionList": [], "minSendTime": "2025-04-21 10:15:32",
|
139
|
+
"completedCount": 4, "skippedCount": 0, "openRate": 1, "clickRate": 0, "orderIncome": 0,
|
140
|
+
"openDistinctUserRate": 1, "clickDistinctUserRate": 0}, "completedCount": 4,
|
141
|
+
"skippedCount": 0, "openRate": 1, "clickRate": 0, "orderIncome": 0, "openDistinctUserRate": 1,
|
142
|
+
"clickDistinctUserRate": 0}, "id": "2503b475-ce3e-4906-ab04-0ebc387f0d7e"}],
|
143
|
+
"showDataStartTime": 1745164800000, "showDataEndTime": 1745251199000}
|
144
|
+
# mock_pulsar = MockFlow.check_flow(mock_domain=_url, host_domain=host_domain, cookies=cookies,
|
145
|
+
# flow_id="FLOW6966717528141252274", pulsar=params,
|
146
|
+
# split_node=["true"])
|
147
|
+
# print(mock_pulsar)
|
148
|
+
|
149
|
+
# old_flow_counts, old_versions, email_contents = MockFlow.get_current_flow(host_domain=host_domain, cookies=cookies,
|
150
|
+
# flow_id="FLOW6966717528141252274",
|
151
|
+
# splits=["false", "false"], get_email_content=True)
|
152
|
+
# print(old_flow_counts, old_versions, email_contents)
|
153
|
+
mock_pulsar_step1, _ = MockFlow.check_flow(mock_domain=_url, host_domain=host_domain, cookies=cookies,
|
154
|
+
flow_id="FLOW6966717528141252274", pulsar=params,
|
155
|
+
split_steps="one", split_node=["true"])
|
156
|
+
# time.sleep(60)
|
157
|
+
mock_pulsar_step2, email_contents = MockFlow.check_flow(mock_domain=_url, host_domain=host_domain, cookies=cookies,
|
158
|
+
flow_id="FLOW6966717528141252274",
|
159
|
+
old_flow_counts=mock_pulsar_step1,
|
160
|
+
split_steps="two", split_node=["true"],
|
161
|
+
get_email_content=True)
|
162
|
+
print(mock_pulsar_step1)
|
163
|
+
print(mock_pulsar_step2)
|
164
|
+
print(email_contents)
|
165
|
+
|
166
|
+
# split_steps="two")
|
167
|
+
# # node_counts, versions = MockFlow.get_current_flow(host_domain=host_domain, cookies=cookies,
|
168
|
+
# flow_id="FLOW6749144046546626518")
|
169
|
+
|
170
|
+
# 调试
|
171
|
+
# # 示例字典
|
172
|
+
# my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}
|
173
|
+
# # 提取所有键到列表
|
174
|
+
# key_list = list(my_dict)
|
175
|
+
# print(key_list)
|
176
|
+
a = ["1", "3", "5"]
|
177
|
+
# b = ["3", "1", "5"]
|
178
|
+
# if a.sort() == b.sort():
|
179
|
+
# print(1)
|
180
|
+
# else:
|
181
|
+
# print(2)
|
182
|
+
|
183
|
+
# 断言邮件
|
184
|
+
loginEmail, password = 'lulu9600000@gmail.com', 'evvurakhttndwspx'
|
185
|
+
email_property = [{'1AutoTest-固定B-营销-生产2.0-2025-04-24 10:19:47.341333-🔥🔥': {'activityId': 408764,
|
186
|
+
'utmConfigInfo': {
|
187
|
+
'utmSource': '1',
|
188
|
+
'utmMedium': '2',
|
189
|
+
'utmCampaign': '3'},
|
190
|
+
'receiveAddress': 'autotest-smartpushpro5@smartpush.com',
|
191
|
+
'sender': 'SmartPush_Pro5_ec2自动化店铺 AutoTestName',
|
192
|
+
'subtitle': 'AutoTest-2025-04-24 10:19:47.341333-subtitle-[[contact.name]]-🔥🔥'}},
|
193
|
+
{'AutoTest-固定B-营销-生产2.0-2025-04-24 10:19:59.023150-🔥🔥': {'activityId': 408765,
|
194
|
+
'utmConfigInfo': {'utmSource': '1',
|
195
|
+
'utmMedium': '2',
|
196
|
+
'utmCampaign': '3'},
|
197
|
+
'receiveAddress': '1autotest-smartpushpro5@smartpush.com',
|
198
|
+
'sender': 'SmartPush_Pro5_ec2自动化店铺 AutoTestName',
|
199
|
+
'subtitle': 'AutoTest-2025-04-24 10:19:59.023150-subtitle-[[contact.name]]-🔥🔥'}},
|
200
|
+
{'测试邮件-AutoTest_营销_生产2.0_2025_04_24 10:20:28.529290_🔥🔥-😈': {'activityId': None,
|
201
|
+
'utmConfigInfo': None,
|
202
|
+
'receiveAddress': 'autotest-smartpushpro5@smartpush.com',
|
203
|
+
'sender': '1SmartPush_Pro5_ec2自动化店铺 AutoTestName',
|
204
|
+
'subtitle': '营销测试邮件-2025-04-24 10:20:29.560357-😈'}}]
|
205
|
+
|
206
|
+
# result = EmailUtlis.check_email_content(emailProperty=email_property, loginEmail=loginEmail, password=password)
|
207
|
+
# print(result)
|
smartpush-1.4.0/README.md
DELETED
@@ -1,44 +0,0 @@
|
|
1
|
-
# SmartPush_AutoTest
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
## Getting started
|
6
|
-
|
7
|
-
## 打包/上传的依赖
|
8
|
-
```
|
9
|
-
pip install wheel
|
10
|
-
pip install twine
|
11
|
-
```
|
12
|
-
|
13
|
-
|
14
|
-
## 打包-打包前记得修改版本号
|
15
|
-
```
|
16
|
-
python setup.py sdist bdist_wheel
|
17
|
-
```
|
18
|
-
|
19
|
-
|
20
|
-
## 上传到pipy的命令
|
21
|
-
```
|
22
|
-
twine upload dist/*
|
23
|
-
```
|
24
|
-
|
25
|
-
# 平台调用demo
|
26
|
-
```
|
27
|
-
import json # import 请置于行首
|
28
|
-
from smartpush.export.basic import ExcelExportChecker
|
29
|
-
from smartpush.export.basic import GetOssUrl
|
30
|
-
oss=GetOssUrl.get_oss_address_with_retry(vars['queryOssId'], "${em_host}", json.loads(requestHeaders))
|
31
|
-
result = ExcelExportChecker.check_excel_all(expected_oss=oss,actual_oss=vars['exportedOss'],ignore_sort =True)
|
32
|
-
assert result
|
33
|
-
```
|
34
|
-
## check_excel_all() 支持拓展参数
|
35
|
-
1、check_type = "including" 如果需要预期结果包含可传 eg.联系人导出场景可用,flow导出场景配合使用
|
36
|
-
2、ignore_sort = 0 如果需要忽略内部的行排序问题可传,eg.email热点点击数据导出无排序可用,传指定第几列,0是第一列
|
37
|
-
3、ignore_sort_sheet_name = "url点击" 搭配ignore_sort使用,指定哪个sheet忽略排序,不传默认所有都排序,参数大小写不敏感(url点击-URL点击)
|
38
|
-
4、skiprows = 1 传1可忽略第一行, eg.如flow的导出可用,动态表头不固定时可以跳过读取第一行
|
39
|
-
|
40
|
-
## get_oss_address_with_retry(target_id, url, requestHeader, requestParam=None, is_import=False, **kwargs)
|
41
|
-
1、is_import 导入校验是否成功传True,否则默认都是导出
|
42
|
-
2、**kwargs 参数支持重试次数
|
43
|
-
tries = 30 # 重试次数
|
44
|
-
delay = 2 # 延迟时间,单位s
|
@@ -1,348 +0,0 @@
|
|
1
|
-
# -*- codeing = utf-8 -*-
|
2
|
-
# @Time :2025/2/20 00:27
|
3
|
-
# @Author :luzebin
|
4
|
-
import json
|
5
|
-
|
6
|
-
import pandas as pd
|
7
|
-
|
8
|
-
from smartpush.export.basic import ExcelExportChecker
|
9
|
-
from smartpush.export.basic.ReadExcel import read_excel_from_oss
|
10
|
-
from smartpush.export.basic.ReadExcel import read_excel_and_write_to_dict
|
11
|
-
from smartpush.export.basic.GetOssUrl import get_oss_address_with_retry
|
12
|
-
from smartpush.utils.DataTypeUtils import DataTypeUtils
|
13
|
-
from smartpush.flow import MockFlow
|
14
|
-
from smartpush.utils import EmailUtlis
|
15
|
-
|
16
|
-
if __name__ == '__main__':
|
17
|
-
# 导出流程
|
18
|
-
oss1 = "https://cdn.smartpushedm.com/material_ec2/2025-02-26/31c1a577af244c65ab9f9a984c64f3d9/ab%E5%BC%B9%E7%AA%97%E6%B5%8B%E8%AF%952.10%E5%88%9B%E5%BB%BA-%E6%9C%89%E5%85%A8%E9%83%A8%E6%95%B0%E6%8D%AE%E9%94%80%E5%94%AE%E9%A2%9D%E6%98%8E%E7%BB%86%E6%95%B0%E6%8D%AE.xlsx"
|
19
|
-
oss2 = "https://cdn.smartpushedm.com/material_ec2/2025-02-26/31c1a577af244c65ab9f9a984c64f3d9/ab%E5%BC%B9%E7%AA%97%E6%B5%8B%E8%AF%952.10%E5%88%9B%E5%BB%BA-%E6%9C%89%E5%85%A8%E9%83%A8%E6%95%B0%E6%8D%AE%E9%94%80%E5%94%AE%E9%A2%9D%E6%98%8E%E7%BB%86%E6%95%B0%E6%8D%AE.xlsx"
|
20
|
-
# # print(check_excel_all(oss1, oss1))
|
21
|
-
oss3 = "https://cdn.smartpushedm.com/material_ec2/2025-03-07/dca03e35cb074ac2a46935c85de9f510/导出全部客户.csv"
|
22
|
-
oss4 = "https://cdn.smartpushedm.com/material_ec2/2025-03-07/c5fa0cc24d05416e93579266910fbd3e/%E5%AF%BC%E5%87%BA%E5%85%A8%E9%83%A8%E5%AE%A2%E6%88%B7.csv"
|
23
|
-
expected_oss = "https://cdn.smartpushedm.com/material_ec2/2025-02-26/757df7e77ce544e193257c0da35a4983/%E3%80%90%E8%87%AA%E5%8A%A8%E5%8C%96%E5%AF%BC%E5%87%BA%E3%80%91%E8%90%A5%E9%94%80%E6%B4%BB%E5%8A%A8%E6%95%B0%E6%8D%AE%E6%A6%82%E8%A7%88.xlsx"
|
24
|
-
# actual_oss = "https://cdn.smartpushedm.com/material_ec2/2025-02-26/757df7e77ce544e193257c0da35a4983/%E3%80%90%E8%87%AA%E5%8A%A8%E5%8C%96%E5%AF%BC%E5%87%BA%E3%80%91%E8%90%A5%E9%94%80%E6%B4%BB%E5%8A%A8%E6%95%B0%E6%8D%AE%E6%A6%82%E8%A7%88.xlsx"
|
25
|
-
url = "https://cdn.smartpushedm.com/material_ec2_prod/2025-03-06/fe6f042f50884466979155c5ef825736/copy%20of%202025-01-16%20%E5%88%9B%E5%BB%BA%E7%9A%84%20A%2FB%20%E6%B5%8B%E8%AF%95%20copy%20of%202025-01-16%20app-%E6%99%AE%E9%80%9A%E6%A8%A1%E6%9D%BF%201%E6%95%B0%E6%8D%AE%E6%80%BB%E8%A7%88.xlsx"
|
26
|
-
|
27
|
-
# e_person_oss1 = "https://cdn.smartpushedm.com/material_ec2/2025-02-27/b48f34b3e88045d189631ec1f0f23d51/%E5%AF%BC%E5%87%BA%E5%85%A8%E9%83%A8%E5%AE%A2%E6%88%B7.csv"
|
28
|
-
# a_person_oss2 = "https://cdn.smartpushedm.com/material_ec2/2025-02-27/c50519d803c04e3b9b52d9f625fed413/%E5%AF%BC%E5%87%BA%E5%85%A8%E9%83%A8%E5%AE%A2%E6%88%B7.csv"
|
29
|
-
|
30
|
-
# # #actual_oss= get_oss_address_with_retry("23161","https://cdn.smartpushedm.com/material_ec2_prod/2025-02-20/dae941ec20964ca5b106407858676f89/%E7%BE%A4%E7%BB%84%E6%95%B0%E6%8D%AE%E6%A6%82%E8%A7%88.xlsx","",'{"page":1,"pageSize":10,"type":null,"status":null,"startTime":null,"endTime":null}')
|
31
|
-
# # res=read_excel_and_write_to_dict(read_excel_from_oss(actual_oss))
|
32
|
-
# # print(res)
|
33
|
-
# # print(read_excel_and_write_to_dict(read_excel_from_oss(oss1), type=".xlsx"))
|
34
|
-
# print(check_excel(check_type="all", actual_oss=actual_oss, expected_oss=expected_oss))
|
35
|
-
# print(check_excel_all(actual_oss=oss1, expected_oss=oss2,skiprows =1))
|
36
|
-
# print(check_excel_all(actual_oss=oss1, expected_oss=oss2,ignore_sort=True))
|
37
|
-
# print(check_excel_all(actual_oss=a_person_oss2, expected_oss=e_person_oss1, check_type="including"))
|
38
|
-
# print(ExcelExportChecker.check_excel_all(actual_oss=oss3, expected_oss=oss4, check_type="including"))
|
39
|
-
# read_excel_csv_data(type=)
|
40
|
-
# print(DataTypeUtils().check_email_format())
|
41
|
-
# errors = ExcelExportChecker.check_field_format(actual_oss=oss1, fileds={0: {5: "time"}}, skiprows=1)
|
42
|
-
# ExcelExportChecker.check_excel_name(actual_oss=oss1, expected_oss=url)
|
43
|
-
|
44
|
-
# flow触发流程
|
45
|
-
_url = "http://sp-go-flow-test.inshopline.com"
|
46
|
-
host_domain = "https://test.smartpushedm.com/api-em-ec2"
|
47
|
-
cookies = "a_lang=zh-hans-cn; ecom_http_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NDc3OTMyMzgsImp0aSI6ImU1YWY4ZGE5LTlhMTQtNGY0Yi04NmM5LTNlNzAwZTFjY2RiYyIsInVzZXJJbmZvIjp7ImlkIjowLCJ1c2VySWQiOiI0MjEzNzg1MjQ3IiwidXNlcm5hbWUiOiIiLCJlbWFpbCI6ImZlbGl4LnNoYW9Ac2hvcGxpbmVhcHAuY29tIiwidXNlclJvbGUiOiJvd25lciIsInBsYXRmb3JtVHlwZSI6Nywic3ViUGxhdGZvcm0iOjEsInBob25lIjoiIiwibGFuZ3VhZ2UiOiJ6aC1oYW5zLWNuIiwiYXV0aFR5cGUiOiIiLCJhdHRyaWJ1dGVzIjp7ImNvdW50cnlDb2RlIjoiQ04iLCJjdXJyZW5jeSI6IkpQWSIsImN1cnJlbmN5U3ltYm9sIjoiSlDCpSIsImRvbWFpbiI6InNtYXJ0cHVzaDQubXlzaG9wbGluZXN0Zy5jb20iLCJsYW5ndWFnZSI6ImVuIiwibWVyY2hhbnRFbWFpbCI6ImZlbGl4LnNoYW9Ac2hvcGxpbmUuY29tIiwibWVyY2hhbnROYW1lIjoiU21hcnRQdXNoNF9lYzJf6Ieq5Yqo5YyW5bqX6ZO6IiwicGhvbmUiOiIiLCJzY29wZUNoYW5nZWQiOnRydWUsInN0YWZmTGFuZ3VhZ2UiOiJ6aC1oYW5zLWNuIiwic3RhdHVzIjowLCJ0aW1lem9uZSI6IkFzaWEvTWFjYW8ifSwic3RvcmVJZCI6IjE2NDQzOTU5MjA0NDQiLCJoYW5kbGUiOiJzbWFydHB1c2g0IiwiZW52IjoiQ04iLCJzdGUiOiIiLCJ2ZXJpZnkiOiIifSwibG9naW5UaW1lIjoxNzQ1MjAxMjM4NjA0LCJzY29wZSI6WyJlbWFpbC1tYXJrZXQiLCJjb29raWUiLCJzbC1lY29tLWVtYWlsLW1hcmtldC1uZXctdGVzdCIsImVtYWlsLW1hcmtldC1uZXctZGV2LWZzIiwiYXBpLXVjLWVjMiIsImFwaS1zdS1lYzIiLCJhcGktZW0tZWMyIiwiZmxvdy1wbHVnaW4iLCJhcGktc3AtbWFya2V0LWVjMiJdLCJjbGllbnRfaWQiOiJlbWFpbC1tYXJrZXQifQ.NgpEGF_8BJgTOh1LNz_Is43JBd7uZhyTGQtQq8SOdsc; osudb_appid=SMARTPUSH; osudb_lang=; osudb_oar=#01#SID0000126BLmmyWXDjlSc59ljxo2axjoWExJ1oHkAkRqVtfzm4UUtWvBGvzF6FeTbrvTHmfJLrtJz+Dpthge0dIaJpI2ukTujazNNJbLjZFu9kkuOrtRAXNL02fNqpUb6MwTCNxOnm03YIlfb7X2482UvDm36; osudb_subappid=1; osudb_uid=4213785247; JSESSIONID=8DEE7103CFA4505DF68ECE629B00A0F3"
|
48
|
-
|
49
|
-
params = {
|
50
|
-
"abandonedOrderId": "c2c4a695a36373f56899b370d0f1b6f2",
|
51
|
-
"areaCode": "",
|
52
|
-
"context": {
|
53
|
-
"order": {
|
54
|
-
"buyerSubscribeEmail": True,
|
55
|
-
"checkoutId": "c2c4a695a36373f56899b370d0f1b6f2",
|
56
|
-
"discountCodes": [],
|
57
|
-
"orderAmountSet": {
|
58
|
-
"amount": 3,
|
59
|
-
"currency": "JPY"
|
60
|
-
},
|
61
|
-
"orderDetails": [
|
62
|
-
{
|
63
|
-
"productId": "16060724900402692190790343",
|
64
|
-
"title": "测试2.0-商品同步AutoSync-2023-08-17 20:52:00",
|
65
|
-
"titleTranslations": []
|
66
|
-
}
|
67
|
-
],
|
68
|
-
"receiverCountryCode": "HK"
|
69
|
-
},
|
70
|
-
"user": {
|
71
|
-
"addresses": [],
|
72
|
-
"areaCode": "",
|
73
|
-
"email": "testsmart200+10@gmail.com",
|
74
|
-
"firstName": "testsmart200+10",
|
75
|
-
"gender": "others",
|
76
|
-
"id": "1911625831177650177",
|
77
|
-
"lastName": "",
|
78
|
-
"phone": "",
|
79
|
-
"tags": [],
|
80
|
-
"uid": "4603296300",
|
81
|
-
"userName": "testsmart200+10"
|
82
|
-
}
|
83
|
-
},
|
84
|
-
"controlObjectId": "c2c4a695a36373f56899b370d0f1b6f2",
|
85
|
-
"controlObjectType": 4,
|
86
|
-
"email": "testsmart200+10@gmail.com",
|
87
|
-
"handle": "smartpush4",
|
88
|
-
"language": "en",
|
89
|
-
"messageId": "1911625832100397058",
|
90
|
-
"phone": "",
|
91
|
-
"platform": 4,
|
92
|
-
"storeId": "1644395920444",
|
93
|
-
"timezone": "Asia/Macao",
|
94
|
-
"triggerId": "c1001",
|
95
|
-
"uid": "4603296300",
|
96
|
-
"userId": "1911625831177650177"
|
97
|
-
}
|
98
|
-
update_flow_params = {"id": "FLOW6941975456855532553", "version": "10", "triggerId": "c1001",
|
99
|
-
"templateId": "TEMP6911595896571704333", "showData": False, "flowChange": True, "nodes": [
|
100
|
-
{"type": "trigger", "data": {
|
101
|
-
"trigger": {"trigger": "c1001", "group": "", "suggestionGroupId": "", "triggerStock": False,
|
102
|
-
"completedCount": 4, "skippedCount": 0}, "completedCount": 4, "skippedCount": 0},
|
103
|
-
"id": "92d115e7-8a86-439a-8cfb-1aa3ef075edf"}, {"type": "delay", "data": {
|
104
|
-
"delay": {"type": "relative", "relativeTime": 0, "relativeUnit": "HOURS", "designatedTime": ""},
|
105
|
-
"completedCount": 4}, "id": "e0fc258b-fcfc-421c-b215-8e41638072ca"}, {"type": "sendLetter", "data": {
|
106
|
-
"sendLetter": {"id": 367462, "activityTemplateId": 367462, "activityName": "flowActivity_EwEi3d",
|
107
|
-
"activityImage": "http://cdn.smartpushedm.com/frontend/smart-push/staging/1644395920444/1744102089665/1744102093754_f99e3703.jpeg",
|
108
|
-
"emailName": "A Message from Your Cart", "merchantId": "1644395920444",
|
109
|
-
"merchantName": "SmartPush4_ec2_自动化店铺",
|
110
|
-
"brandName": "SmartPush4_ec2_自动化店铺 AutoTestName", "currency": "JP¥",
|
111
|
-
"activityType": "NORMAL", "activityStatus": "ACTIVE", "createTime": 1745201732286,
|
112
|
-
"updateTime": 1745201825819, "createDate": "2025-04-21 10:15:32",
|
113
|
-
"updateDate": "2025-04-21 10:17:05", "pickContactPacks": [], "excludeContactPacks": [],
|
114
|
-
"customerGroupIds": [], "excludeCustomerGroupIds": [], "pickContactInfos": [],
|
115
|
-
"excludeContactInfos": [], "customerGroupInfos": [], "excludeCustomerGroupInfos": [],
|
116
|
-
"sender": "SmartPush4_ec2_自动化店铺", "senderDomain": "DEFAULT_DOMAIN", "domainType": 3,
|
117
|
-
"receiveAddress": "", "originTemplate": 33,
|
118
|
-
"currentJsonSchema": "{\"id\":\"a4a9fba2a\",\"type\":\"Stage\",\"props\":{\"backgroundColor\":\"#EAEDF1\",\"width\":\"600px\",\"fullWidth\":\"normal-width\"},\"children\":[{\"id\":\"84ba788da\",\"type\":\"Header\",\"props\":{\"backgroundColor\":\"#ffffff\",\"borderLeft\":\"1px none #ffffff\",\"borderRight\":\"1px none #ffffff\",\"borderTop\":\"1px none #ffffff\",\"borderBottom\":\"1px none #ffffff\",\"paddingTop\":\"0px\",\"paddingBottom\":\"0px\",\"paddingLeft\":\"0px\",\"paddingRight\":\"0px\",\"cols\":[12]},\"children\":[{\"id\":\"98d909a48\",\"type\":\"Column\",\"props\":{},\"children\":[]}]},{\"id\":\"84ba7bbda\",\"type\":\"Section\",\"props\":{\"backgroundColor\":\"#ffffff\",\"borderLeft\":\"1px none #ffffff\",\"borderRight\":\"1px none #ffffff\",\"borderTop\":\"1px none #ffffff\",\"borderBottom\":\"1px none #ffffff\",\"paddingTop\":\"0px\",\"paddingBottom\":\"0px\",\"paddingLeft\":\"0px\",\"paddingRight\":\"0px\",\"cols\":[12]},\"children\":[{\"id\":\"8cab9aa48\",\"type\":\"Column\",\"props\":{},\"children\":[]}]},{\"id\":\"b8bbabad9\",\"type\":\"Footer\",\"props\":{\"backgroundColor\":\"#ffffff\",\"borderLeft\":\"1px none #ffffff\",\"borderRight\":\"1px none #ffffff\",\"borderTop\":\"1px none #ffffff\",\"borderBottom\":\"1px none #ffffff\",\"paddingTop\":\"0px\",\"paddingBottom\":\"0px\",\"paddingLeft\":\"0px\",\"paddingRight\":\"0px\",\"cols\":[12]},\"children\":[{\"id\":\"b3bcabad7\",\"type\":\"Column\",\"props\":{},\"children\":[{\"id\":\"b39b6a94a\",\"type\":\"Subscribe\",\"props\":{\"content\":\"<p style=\\\"text-align:center;\\\"><span style=\\\"font-size:12px\\\"><span style=\\\"font-family:Arial, Helvetica, sans-serif\\\">在此處輸入聯繫地址,可以讓你的顧客更加信任這封郵件</span></span></p>\"},\"children\":[]}]}]}],\"extend\":{\"version\":\"1.0.0\",\"updateTime\":\"2025-03-18T09:57:40.953Z\"}}",
|
119
|
-
"currentHtml": "<!doctype html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xmlns:v=\"urn:schemas-microsoft-com:vml\" xmlns:o=\"urn:schemas-microsoft-com:office:office\">\n <head>\n <title></title>\n <!--[if !mso]><!-->\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n <!--<![endif]-->\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n <style type=\"text/css\">\n #outlook a { padding:0; }\n body { margin:0;padding:0;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%; }\n table, td { border-collapse:collapse;mso-table-lspace:0pt;mso-table-rspace:0pt; }\n img { border:0;line-height:100%; outline:none;text-decoration:none;-ms-interpolation-mode:bicubic; }\n pre{margin: 0;}p{ display: block;margin:0;}\n </style>\n <!--[if mso]>\n <noscript>\n <xml>\n <o:OfficeDocumentSettings>\n <o:AllowPNG/>\n <o:PixelsPerInch>96</o:PixelsPerInch>\n </o:OfficeDocumentSettings>\n </xml>\n </noscript>\n <![endif]-->\n <!--[if lte mso 11]>\n <style type=\"text/css\">\n .mj-outlook-group-fix { width:100% !important; }\n </style>\n <![endif]-->\n \n <!--[if !mso]><!-->\n <link href=\"https://fonts.googleapis.com/css?family=Ubuntu:300,400,500,700\" rel=\"stylesheet\" type=\"text/css\">\n <style type=\"text/css\">\n @import url(https://fonts.googleapis.com/css?family=Ubuntu:300,400,500,700);\n </style>\n <!--<![endif]-->\n\n \n \n <style type=\"text/css\">\n @media only screen and (min-width:480px) {\n .mj-column-per-100 { width:100% !important; max-width: 100%; }\n }\n </style>\n <style media=\"screen and (min-width:480px)\">\n .moz-text-html .mj-column-per-100 { width:100% !important; max-width: 100%; }\n </style>\n \n \n <style type=\"text/css\">\n \n \n </style>\n <style type=\"text/css\">\n @import url(https://fonts.googleapis.com/css?family=Arvo:400|Bodoni+Moda:400|DM+Sans:400|Poppins:400|Hammersmith+One:400|Libre+Baskerville:400|Lexend+Giga:400|Ubuntu:400|Montserrat:400|Nunito:400|News+Cycle:400|Roboto:400|Oswald:400);@import url(https://fonts.googleapis.com/css?family=Asar:400|Bruno+Ace:400|Cantata+One:400|League+Gothic:400|Long+Cang:400|Lovers+Quarrel:400|Nanum+Gothic+Coding:400|Nanum+Myeongjo:400|Noto+Sans+Kaithi:400|Noto+Sans+Kannada:400|Noto+Sans+Math:400|Noto+Sans+Syloti+Nagri:400|Noto+Serif+JP:400|Playwrite+AT+Guides:400|Saira+Extra+Condensed:400|Tsukimi+Rounded:400|Waiting+for+the+Sunrise:400);h1,\nh2,\nh3,\nh4,\nh5 {\n font-weight: bold;\n margin-bottom: 0;\n}\np {\n margin-top: 0;\n margin-bottom: 0;\n min-height: 1em;\n}\n\nul {\n margin-bottom: 0;\n}\n\nth {\n font-weight: bold;\n}\n\na {\n text-decoration: none;\n}\n\na::-webkit-scrollbar {\n -webkit-appearance: none;\n}\n\na::-webkit-scrollbar:horizontal {\n max-height: 8px;\n}\n\na::-webkit-scrollbar-thumb {\n border-radius: 8px;\n background-color: rgba(0, 0, 0, 0.5);\n}\n\nul,\nol,\ndl {\n margin-top: 16px !important;\n}\n\npre {\n word-break: break-word;\n padding: 0;\n margin: 0;\n white-space: inherit !important;\n}\n\npre p {\n word-break: break-word;\n padding: 0;\n margin: 0;\n color: #000000;\n}\n\nspan[style*='color'] a {\n color: inherit;\n}\n\n.mj-column-no-meida-100{\n width: 100% !important;\n}\n.mj-column-no-meida-50{\n width: 50% !important;\n}\n.mj-column-no-meida-33-333333333333336{\n width: 33.333333333333336% !important;\n}\n.mj-column-no-meida-25{\n width: 25% !important;\n}\n\n.white-nowrap {\n white-space: nowrap !important;\n}\n\n/* 间距 */\n.sp-m-p-0 {\n margin: 0;\n padding: 0;\n}\n\n.nps-content-span a {\n color: inherit !important;\n}.sp-font-12 {\n font-size: 12px !important;\n}\n\n.sp-font-14 {\n font-size: 14px !important;\n}\n\n.sp-font-16 {\n font-size: 16px !important;\n}\n\n.sp-font-18 {\n font-size: 18px !important;\n}\n\n.sp-font-20 {\n font-size: 20px !important;\n}\n\n.sp-font-22 {\n font-size: 22px !important;\n}\n\n.sp-font-24 {\n font-size: 24px !important;\n}\n\n.sp-font-26 {\n font-size: 26px !important;\n}\n\n.sp-font-28 {\n font-size: 28px !important;\n}\n\n.sp-font-30 {\n font-size: 30px !important;\n}\n\n.sp-font-32 {\n font-size: 32px !important;\n}\n\n.sp-font-34 {\n font-size: 34px !important;\n}\n\n.sp-font-36 {\n font-size: 36px !important;\n}\n\n.sp-font-38 {\n font-size: 38px !important;\n}\n\n.sp-font-40 {\n font-size: 40px !important;\n}\n\n.sp-font-42 {\n font-size: 42px !important;\n}\n\n.sp-font-44 {\n font-size: 44px !important;\n}\n\n.sp-font-46 {\n font-size: 46px !important;\n}\n\n.sp-font-48 {\n font-size: 48px !important;\n}\n\n.sp-font-50 {\n font-size: 50px !important;\n}\n\n.sp-font-52 {\n font-size: 52px !important;\n}\n\n.sp-font-54 {\n font-size: 54px !important;\n}\n\n.sp-font-56 {\n font-size: 56px !important;\n}\n\n.sp-font-58 {\n font-size: 58px !important;\n}\n\n.sp-font-60 {\n font-size: 60px !important;\n}\n\n.sp-image-icon {\n width: 50px;\n}\n\n@media only screen and (max-width:600px) {\n\n .sp-font-12 {\n font-size: 12px !important;\n }\n\n .sp-font-14 {\n font-size: 12px !important;\n }\n\n .sp-font-16 {\n font-size: 12px !important;\n }\n\n .sp-font-18 {\n font-size: 13px !important;\n }\n\n .sp-font-20 {\n font-size: 15px !important;\n }\n\n .sp-font-22 {\n font-size: 16px !important;\n }\n\n .sp-font-24 {\n font-size: 18px !important;\n }\n\n .sp-font-26 {\n font-size: 19px !important;\n }\n\n .sp-font-28 {\n font-size: 21px !important;\n }\n\n .sp-font-30 {\n font-size: 22px !important;\n }\n\n .sp-font-32 {\n font-size: 24px !important;\n }\n\n .sp-font-34 {\n font-size: 25px !important;\n }\n\n .sp-font-36 {\n font-size: 27px !important;\n }\n\n .sp-font-38 {\n font-size: 28px !important;\n }\n\n .sp-font-40 {\n font-size: 30px !important;\n }\n\n .sp-font-42 {\n font-size: 31px !important;\n }\n\n .sp-font-44 {\n font-size: 32px !important;\n }\n\n .sp-font-46 {\n font-size: 33px !important;\n }\n\n .sp-font-48 {\n font-size: 34px !important;\n }\n\n .sp-font-50 {\n font-size: 35px !important;\n }\n\n .sp-font-52 {\n font-size: 36px !important;\n }\n\n .sp-font-54 {\n font-size: 37px !important;\n }\n\n .sp-font-56 {\n font-size: 38px !important;\n }\n\n .sp-font-58 {\n font-size: 39px !important;\n }\n\n .sp-font-60 {\n font-size: 40px !important;\n }\n\n .sp-image-icon {\n width: 28px !important;\n }\n\n}@media only screen and (max-width:480px) {\n\n .sp-img-h-1-TwoVertical-11,\n .sp-img-h-1-TwoHorizontalColumns-11 {\n height: 170px !important;\n }\n\n .sp-img-h-1-TwoVertical-23,\n .sp-img-h-1-TwoHorizontalColumns-23 {\n height: 243px !important;\n }\n\n .sp-img-h-1-TwoVertical-34,\n .sp-img-h-1-TwoHorizontalColumns-34 {\n height: 227px !important;\n }\n\n .sp-img-h-1-TwoVertical-43,\n .sp-img-h-1-TwoHorizontalColumns-43 {\n height: 127px !important;\n }\n\n .sp-img-h-1-ThreeHorizontalColumns-11 {\n height: 109px !important;\n }\n\n .sp-img-h-1-ThreeHorizontalColumns-23 {\n height: 163px !important;\n }\n\n .sp-img-h-1-ThreeHorizontalColumns-34 {\n height: 145px !important;\n }\n\n .sp-img-h-1-ThreeHorizontalColumns-43 {\n height: 81px !important;\n }\n\n .sp-img-h-2-TwoVertical-11 {\n height: 164px !important;\n }\n\n .sp-img-h-2-TwoVertical-23 {\n height: 246px !important;\n }\n\n .sp-img-h-2-TwoVertical-34 {\n height: 218px !important;\n }\n\n .sp-img-h-2-TwoVertical-43 {\n height: 123px !important;\n }\n\n .sp-img-h-2-ThreeHorizontalColumns-11,\n .sp-img-h-2-TwoHorizontalColumns-11 {\n height: 76px !important;\n }\n\n .sp-img-h-2-ThreeHorizontalColumns-23,\n .sp-img-h-2-TwoHorizontalColumns-23 {\n height: 113px !important;\n }\n\n .sp-img-h-2-ThreeHorizontalColumns-34,\n .sp-img-h-2-TwoHorizontalColumns-34 {\n height: 101px !important;\n }\n\n .sp-img-h-2-ThreeHorizontalColumns-43,\n .sp-img-h-2-TwoHorizontalColumns-43 {\n height: 57px !important;\n }\n}@media only screen and (min-width: 320px) and (max-width: 599px) {\n .mj-w-50 {\n width: 50% !important;\n max-width: 50%;\n }\n}\n\n@media only screen and (max-width: 480px) {\n .shop-white-mobile {\n width: 100% !important;\n }\n .mj-td-force-100{\n display: inline-block;\n width: 100% !important;\n }\n\n .mj-ImageText-screen {\n width: 100% !important;\n }\n .mj-ImageText-img {\n margin: 0 auto;\n }\n\n .mj-ImageText-margin {\n margin: 0 !important;\n }\n\n .mj-ImageText-margin-zero {\n margin: 0 5px 0 0 !important;\n }\n\n .mj-ImageText-margin-one {\n margin: 0 0 0 5px !important;\n }\n .mj-column-per-50-force {\n width: 50% !important;\n max-width: 50%;\n }\n}\n\n@media only screen and (min-width: 480px) {\n .mj-imagetext-force-100{\n display: inline-block;\n width: 100% !important;\n }\n .mj-column-per-100 {\n width: 100% !important;\n max-width: 100%;\n }\n\n .mj-column-per-50 {\n width: 50% !important;\n max-width: 50%;\n }\n\n .mj-column-per-33-333333333333336 {\n width: 33.333333333333336% !important;\n max-width: 33.333333333333336%;\n }\n\n .mj-column-per-25 {\n width: 25% !important;\n max-width: 25%;\n }\n\n\n .mg-column-per-46-5 {\n width: 46.5% !important;\n max-width: 46.5%;\n }\n\n .mj-AbandonProduct-cloum-align-center {\n align-items: flex-start !important;\n }\n\n\n .mj-OrderInformation-padding-top-220 {\n padding-top: 20px !important;\n }\n\n .mj-OrderInformation-float-left {\n float: left !important;\n }\n}@media only screen and (max-width: 480px) {\n .mt-1{\n margin-top: 1px;\n }\n .mt-2{\n margin-top: 2px;\n }\n .mt-3{\n margin-top: 3px;\n }\n .mt-4{\n margin-top: 4px;\n }\n .mt-5{\n margin-top: 5px;\n }\n .mt-6{\n margin-top: 7px;\n }\n .mt-8{\n margin-top: 9px;\n }\n .mt-10{\n margin-top: 10px;\n }\n\n}\n </style>\n \n </head>\n <body style=\"word-spacing:normal;background-color:#EAEDF1;\">\n \n \n <div\n style=\"background-color:#EAEDF1;\"\n >\n <table className=\"pv-stage\">\n <tbody>\n <tr>\n <td style=\"display:table-column;\"><div style=\"width:1px; height:1px;\"><img style=\"width:1px; height:1px;\" width=\"1\" src=\"${SP_OPEN_EMAIL_URL}\" />\n </div></td>\n </tr>\n </tbody>\n </table><div mso-hide: all; position: fixed; height: 0; max-height: 0; overflow: hidden; font-size: 0; style=\"display:none;\">${emailSubtitle}</div>\n \n <!--[if mso | IE]><table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"\" role=\"presentation\" style=\"width:600px;\" width=\"600\" bgcolor=\"#ffffff\" ><tr><td style=\"line-height:0px;font-size:0px;mso-line-height-rule:exactly;\"><![endif]-->\n \n \n <div style=\"background:#ffffff;background-color:#ffffff;margin:0px auto;max-width:600px;\">\n \n <table\n align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" role=\"presentation\" style=\"background:#ffffff;background-color:#ffffff;width:100%;\"\n >\n <tbody>\n <tr>\n <td\n style=\"border-bottom:1px none #ffffff;border-left:1px none #ffffff;border-right:1px none #ffffff;border-top:1px none #ffffff;direction:ltr;font-size:0px;padding:20px 0;padding-bottom:0px;padding-left:0px;padding-right:0px;padding-top:0px;text-align:center;\"\n >\n <!--[if mso | IE]><table role=\"presentation\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr><td class=\"\" style=\"vertical-align:top;width:598px;\" ><![endif]-->\n \n <div\n class=\"mj-column-per-100 mj-outlook-group-fix\" style=\"font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;\"\n >\n \n <table\n border=\"0\" cellpadding=\"0\" cellspacing=\"0\" role=\"presentation\" style=\"vertical-align:top;\" width=\"100%\"\n >\n <tbody>\n \n <tr>\n <td\n align=\"left\" style=\"font-size:0px;padding:0;word-break:break-word;\"\n >\n \n <table\n cellpadding=\"0\" cellspacing=\"0\" width=\"100%\" border=\"0\" style=\"color:#000000;font-family:Ubuntu, Helvetica, Arial, sans-serif;font-size:13px;line-height:22px;table-layout:fixed;width:100%;border:none;\"\n >\n <table style=\"margin:0;padding:0;width:100%;table-layout:fixed\" class=\"\" sp-id=\"subscribe-area-b39b6a94a\"><tbody><tr style=\"width:100%\"><td style=\"margin:0;padding:0;width:100%;text-align:center;padding-top:20px;padding-left:20px;padding-right:20px;padding-bottom:20px;background-color:transparent;font-family:arial,helvetica,sans-serif,Arial, Helvetica, sans-serif\" class=\"Subscribe\"><table cellPadding=\"0\" cellSpacing=\"0\" style=\"width:100%\"><tbody><tr><td align=\"center\" class=\"sp-font-16\" valign=\"middle\" style=\"padding-left:10px;padding-right:10px;padding-top:10px;text-align:left;font-size:16px\"><div><p style=\"text-align:center;\"><span style=\"font-size:12px\"><span style=\"font-family:Arial, Helvetica, sans-serif\">在此處輸入聯繫地址,可以讓你的顧客更加信任這封郵件</span></span></p></div></td></tr><tr><td align=\"center\" valign=\"middle\" height=\"20\" style=\"font-size:12px;font-family:arial,helvetica,sans-serif,Arial, Helvetica, sans-serif;padding-left:10px;padding-right:10px;padding-bottom:20px\"></td></tr><div><tr style=\"${hide_logo}\" sp-id=\"subscribe-dom-b39b6a94a\">\n <td class='sp-font-16' style=\"padding-left:20px;padding-right:20px;padding-top:20px;text-align:center;font-size:16px\" >\n <div style=\"border-top: 1px solid #EEF1F6\">\n <img src=\"https://cdn.smartpushedm.com/frontend/smart-push/product/image/1731577171577_83853d55.png\" style=\"padding: 10px;vertical-align: middle;width: 158px;\"alt=\"\" />\n </div>\n <p style=\"color:#343434;font-size:12px\">Providing content services for [[shopName]]</p>\n </td>\n </tr></div></tbody></table></td></tr></tbody></table>\n </table>\n \n </td>\n </tr>\n \n </tbody>\n </table>\n \n </div>\n \n <!--[if mso | IE]></td></tr></table><![endif]-->\n </td>\n </tr>\n </tbody>\n </table>\n \n </div>\n \n \n <!--[if mso | IE]></td></tr></table><![endif]-->\n \n \n </div>\n \n </body>\n</html>\n ",
|
120
|
-
"previewJsonSchema": "{\"id\":\"a4a9fba2a\",\"type\":\"Stage\",\"props\":{\"backgroundColor\":\"#EAEDF1\",\"width\":\"600px\",\"fullWidth\":\"normal-width\"},\"children\":[{\"id\":\"84ba788da\",\"type\":\"Header\",\"props\":{\"backgroundColor\":\"#ffffff\",\"borderLeft\":\"1px none #ffffff\",\"borderRight\":\"1px none #ffffff\",\"borderTop\":\"1px none #ffffff\",\"borderBottom\":\"1px none #ffffff\",\"paddingTop\":\"0px\",\"paddingBottom\":\"0px\",\"paddingLeft\":\"0px\",\"paddingRight\":\"0px\",\"cols\":[12]},\"children\":[{\"id\":\"98d909a48\",\"type\":\"Column\",\"props\":{},\"children\":[]}]},{\"id\":\"84ba7bbda\",\"type\":\"Section\",\"props\":{\"backgroundColor\":\"#ffffff\",\"borderLeft\":\"1px none #ffffff\",\"borderRight\":\"1px none #ffffff\",\"borderTop\":\"1px none #ffffff\",\"borderBottom\":\"1px none #ffffff\",\"paddingTop\":\"0px\",\"paddingBottom\":\"0px\",\"paddingLeft\":\"0px\",\"paddingRight\":\"0px\",\"cols\":[12]},\"children\":[{\"id\":\"8cab9aa48\",\"type\":\"Column\",\"props\":{},\"children\":[]}]},{\"id\":\"b8bbabad9\",\"type\":\"Footer\",\"props\":{\"backgroundColor\":\"#ffffff\",\"borderLeft\":\"1px none #ffffff\",\"borderRight\":\"1px none #ffffff\",\"borderTop\":\"1px none #ffffff\",\"borderBottom\":\"1px none #ffffff\",\"paddingTop\":\"0px\",\"paddingBottom\":\"0px\",\"paddingLeft\":\"0px\",\"paddingRight\":\"0px\",\"cols\":[12]},\"children\":[{\"id\":\"b3bcabad7\",\"type\":\"Column\",\"props\":{},\"children\":[{\"id\":\"b39b6a94a\",\"type\":\"Subscribe\",\"props\":{\"content\":\"<p style=\\\"text-align:center;\\\"><span style=\\\"font-size:12px\\\"><span style=\\\"font-family:Arial, Helvetica, sans-serif\\\">在此處輸入聯繫地址,可以讓你的顧客更加信任這封郵件</span></span></p>\"},\"children\":[]}]}]}],\"extend\":{\"version\":\"1.0.0\",\"updateTime\":\"2025-03-18T09:57:40.953Z\"}}",
|
121
|
-
"generatedHtml": False,
|
122
|
-
"templateUrl": "https://cdn2.smartpushedm.com/material/2021-11-29/d4f96fc873e942a397be708c932bbbe4-自定义排版.png",
|
123
|
-
"sendStrategy": "NOW", "totalReceiver": 0, "utmConfigEnable": False,
|
124
|
-
"subtitle": "Items in your cart are selling out fast!", "language": "en",
|
125
|
-
"languageName": "英语", "timezone": "Asia/Shanghai", "timezoneGmt": "GMT+08:00",
|
126
|
-
"type": "FLOW", "relId": "FLOW6941975456855532553",
|
127
|
-
"parentId": "TEMP6911595896571704333", "nodeId": "2503b475-ce3e-4906-ab04-0ebc387f0d7e",
|
128
|
-
"version": "10", "nodeOrder": 0, "sendType": "EMAIL", "productInfos": [], "blocks": [
|
129
|
-
{"domId": "subscribe-dom-b39b6a94a", "blockId": "", "areaId": "", "type": "SP_LOGO",
|
130
|
-
"column": 1, "fillStyle": 0, "ratio": ""}], "discountCodes": [], "reviews": [], "awards": [],
|
131
|
-
"selectProducts": [], "createSource": "BUILD_ACTIVITY", "contentChange": True,
|
132
|
-
"activityChange": False, "imageVersion": "1744102089665", "subActivityList": [],
|
133
|
-
"warmupPack": 0, "boosterEnabled": False, "smartSending": False, "boosterCreated": False,
|
134
|
-
"gmailPromotion": False, "sendTimeType": "FIXED", "sendTimezone": "B_TIMEZONE",
|
135
|
-
"sendTimeDelay": False, "sendOption": 1, "hasUserBlock": False, "hasAutoBlock": False,
|
136
|
-
"smsSendDelay": True, "payFunctionList": [], "minSendTime": "2025-04-21 10:15:32",
|
137
|
-
"completedCount": 4, "skippedCount": 0, "openRate": 1, "clickRate": 0, "orderIncome": 0,
|
138
|
-
"openDistinctUserRate": 1, "clickDistinctUserRate": 0}, "completedCount": 4,
|
139
|
-
"skippedCount": 0, "openRate": 1, "clickRate": 0, "orderIncome": 0, "openDistinctUserRate": 1,
|
140
|
-
"clickDistinctUserRate": 0}, "id": "2503b475-ce3e-4906-ab04-0ebc387f0d7e"}],
|
141
|
-
"showDataStartTime": 1745164800000, "showDataEndTime": 1745251199000}
|
142
|
-
# mock_pulsar = MockFlow.check_flow(mock_domain=_url, host_domain=host_domain, cookies=cookies,
|
143
|
-
# flow_id="FLOW6941975456855532553", pulsar=params,
|
144
|
-
# update_flow_params=update_flow_params)
|
145
|
-
# print(mock_pulsar)
|
146
|
-
|
147
|
-
# mock_pulsar_step1, _ = MockFlow.check_flow(mock_domain=_url, host_domain=host_domain, cookies=cookies,
|
148
|
-
# flow_id="FLOW6941975456855532553", pulsar=params,
|
149
|
-
# update_flow_params=update_flow_params, split_steps="one")
|
150
|
-
# mock_pulsar_step2 = MockFlow.check_flow(mock_domain=_url, host_domain=host_domain, cookies=cookies,
|
151
|
-
# flow_id="FLOW6941975456855532553", old_flow_counts=mock_pulsar_step1,
|
152
|
-
# print(mock_pulsar_step1)
|
153
|
-
# print(mock_pulsar_step2)
|
154
|
-
|
155
|
-
# split_steps="two")
|
156
|
-
# # node_counts, versions = MockFlow.get_current_flow(host_domain=host_domain, cookies=cookies,
|
157
|
-
# flow_id="FLOW6749144046546626518")
|
158
|
-
|
159
|
-
# 调试
|
160
|
-
# # 示例字典
|
161
|
-
# my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}
|
162
|
-
# # 提取所有键到列表
|
163
|
-
# key_list = list(my_dict)
|
164
|
-
# print(key_list)
|
165
|
-
a = ["1", "3", "5"]
|
166
|
-
# b = ["3", "1", "5"]
|
167
|
-
# if a.sort() == b.sort():
|
168
|
-
# print(1)
|
169
|
-
# else:
|
170
|
-
# print(2)
|
171
|
-
|
172
|
-
# 断言邮件
|
173
|
-
loginEmail, password = 'lulu9600000@gmail.com', 'evvurakhttndwspx'
|
174
|
-
email_property = [{'1AutoTest-固定B-营销-生产2.0-2025-04-24 10:19:47.341333-🔥🔥': {'activityId': 408764,
|
175
|
-
'utmConfigInfo': {
|
176
|
-
'utmSource': '1',
|
177
|
-
'utmMedium': '2',
|
178
|
-
'utmCampaign': '3'},
|
179
|
-
'receiveAddress': 'autotest-smartpushpro5@smartpush.com',
|
180
|
-
'sender': 'SmartPush_Pro5_ec2自动化店铺 AutoTestName',
|
181
|
-
'subtitle': 'AutoTest-2025-04-24 10:19:47.341333-subtitle-[[contact.name]]-🔥🔥'}},
|
182
|
-
{'AutoTest-固定B-营销-生产2.0-2025-04-24 10:19:59.023150-🔥🔥': {'activityId': 408765,
|
183
|
-
'utmConfigInfo': {'utmSource': '1',
|
184
|
-
'utmMedium': '2',
|
185
|
-
'utmCampaign': '3'},
|
186
|
-
'receiveAddress': '1autotest-smartpushpro5@smartpush.com',
|
187
|
-
'sender': 'SmartPush_Pro5_ec2自动化店铺 AutoTestName',
|
188
|
-
'subtitle': 'AutoTest-2025-04-24 10:19:59.023150-subtitle-[[contact.name]]-🔥🔥'}},
|
189
|
-
{'测试邮件-AutoTest_营销_生产2.0_2025_04_24 10:20:28.529290_🔥🔥-😈': {'activityId': None,
|
190
|
-
'utmConfigInfo': None,
|
191
|
-
'receiveAddress': 'autotest-smartpushpro5@smartpush.com',
|
192
|
-
'sender': '1SmartPush_Pro5_ec2自动化店铺 AutoTestName',
|
193
|
-
'subtitle': '营销测试邮件-2025-04-24 10:20:29.560357-😈'}}]
|
194
|
-
result = EmailUtlis.check_email_content(emailProperty=email_property, loginEmail=loginEmail, password=password)
|
195
|
-
print(result)
|
196
|
-
|
197
|
-
ccc = {
|
198
|
-
"id": "FLOW6966717528141252274",
|
199
|
-
"version": "2",
|
200
|
-
"triggerId": "c1001",
|
201
|
-
"templateId": "",
|
202
|
-
"showData": False,
|
203
|
-
"flowChange": True,
|
204
|
-
"nodes": [
|
205
|
-
{
|
206
|
-
"type": "trigger",
|
207
|
-
"data": {
|
208
|
-
"trigger": {
|
209
|
-
"trigger": "c1001",
|
210
|
-
"group": "",
|
211
|
-
"suggestionGroupId": "",
|
212
|
-
"triggerStock": False,
|
213
|
-
"completedCount": 1,
|
214
|
-
"skippedCount": 0
|
215
|
-
},
|
216
|
-
"completedCount": 1,
|
217
|
-
"skippedCount": 0
|
218
|
-
},
|
219
|
-
"id": "049fd321-5a22-4f92-9692-a3da9507ee4b"
|
220
|
-
},
|
221
|
-
{
|
222
|
-
"type": "delay",
|
223
|
-
"data": {
|
224
|
-
"delay": {
|
225
|
-
"type": "relative",
|
226
|
-
"relativeTime": 0,
|
227
|
-
"relativeUnit": "MINUTES",
|
228
|
-
"designatedTime": ""
|
229
|
-
},
|
230
|
-
"completedCount": 1
|
231
|
-
},
|
232
|
-
"id": "09ff19db-33a3-41d8-88e9-12e6017ddfd3"
|
233
|
-
},
|
234
|
-
{
|
235
|
-
"type": "sendLetter",
|
236
|
-
"data": {
|
237
|
-
"sendLetter": {
|
238
|
-
"id": 373090,
|
239
|
-
"activityTemplateId": 373090,
|
240
|
-
"activityName": "flowActivity_0aGnZ9",
|
241
|
-
"activityImage": "http://cdn.smartpushedm.com/frontend/smart-push/staging/1644395920444/1745576879501/1745576881592_c412cc2e.jpeg",
|
242
|
-
"emailName": "邮件发送",
|
243
|
-
"merchantId": "1644395920444",
|
244
|
-
"merchantName": "SmartPush4_ec2_自动化店铺",
|
245
|
-
"brandName": "SmartPush4_ec2_自动化店铺 AutoTestName",
|
246
|
-
"currency": "JP¥",
|
247
|
-
"activityType": "NORMAL",
|
248
|
-
"activityStatus": "ACTIVE",
|
249
|
-
"createTime": 1745576857268,
|
250
|
-
"updateTime": 1745576973175,
|
251
|
-
"createDate": "2025-04-25 18:27:37",
|
252
|
-
"updateDate": "2025-04-25 18:29:33",
|
253
|
-
"pickContactPacks": [],
|
254
|
-
"excludeContactPacks": [],
|
255
|
-
"customerGroupIds": [],
|
256
|
-
"excludeCustomerGroupIds": [],
|
257
|
-
"schemaAnalysis": "{\"schema\":{\"Stage\":[\"a4a9fba2a\"],\"Header\":[\"84ba788da\"],\"Column\":[\"98d909a48\",\"8cab9aa48\",\"b3bcabad7\"],\"TextSet\":[\"8298cb99a\"],\"Section\":[\"84ba7bbda\"],\"Logo\":[\"b98abb998\",\"8a9b4bafa\"],\"Footer\":[\"b8bbabad9\"],\"Subscribe\":[\"b39b6a94a\"]}}",
|
258
|
-
"pickContactInfos": [],
|
259
|
-
"excludeContactInfos": [],
|
260
|
-
"customerGroupInfos": [],
|
261
|
-
"excludeCustomerGroupInfos": [],
|
262
|
-
"sender": "SmartPush4_ec2_自动化店铺 AutoTestName",
|
263
|
-
"senderDomain": "DEFAULT_DOMAIN",
|
264
|
-
"domainType": 3,
|
265
|
-
"receiveAddress": "autotest-smartpush4@smartpush.com",
|
266
|
-
"originTemplate": 887,
|
267
|
-
"collectTemplate": 0,
|
268
|
-
"currentJsonSchema": "{\"id\":\"a4a9fba2a\",\"type\":\"Stage\",\"props\":{\"backgroundColor\":\"#EAEDF1\",\"width\":\"600px\",\"fullWidth\":\"normal-width\"},\"children\":[{\"id\":\"84ba788da\",\"type\":\"Header\",\"props\":{\"backgroundColor\":\"#ffffff\",\"borderLeft\":\"1px none #ffffff\",\"borderRight\":\"1px none #ffffff\",\"borderTop\":\"1px none #ffffff\",\"borderBottom\":\"1px none #ffffff\",\"paddingTop\":\"0px\",\"paddingBottom\":\"0px\",\"paddingLeft\":\"0px\",\"paddingRight\":\"0px\",\"cols\":[12]},\"children\":[{\"id\":\"98d909a48\",\"type\":\"Column\",\"props\":{},\"children\":[{\"id\":\"8298cb99a\",\"type\":\"TextSet\",\"props\":{\"list\":[{\"borderWidth\":\"1px\",\"borderStyle\":\"none\",\"content\":\"<p style=\\\"line-height: 3; text-align: right;\\\"><span style=\\\"color: #000000; font-size: 12px; font-family: arial, sans-serif;\\\"><a style=\\\"color: #000000;\\\" href=\\\"${viewInWebApiUrl}\\\">Can't see the email? Please <span style=\\\"color: #3598db;\\\">click here</span></a></span></p>\",\"paddingLeft\":\"10px\",\"paddingRight\":\"10px\",\"paddingTop\":\"0px\",\"paddingBottom\":\"0px\",\"borderColor\":\"#ffffff\"}],\"containerBackgroundColor\":\"transparent\",\"paddingLeft\":\"10px\",\"paddingRight\":\"10px\",\"paddingTop\":\"10px\",\"paddingBottom\":\"10px\"},\"children\":[]}]}]},{\"id\":\"84ba7bbda\",\"type\":\"Section\",\"props\":{\"backgroundColor\":\"#ffffff\",\"borderLeft\":\"1px none #ffffff\",\"borderRight\":\"1px none #ffffff\",\"borderTop\":\"1px none #ffffff\",\"borderBottom\":\"1px none #ffffff\",\"paddingTop\":\"0px\",\"paddingBottom\":\"0px\",\"paddingLeft\":\"0px\",\"paddingRight\":\"0px\",\"cols\":[12]},\"children\":[{\"id\":\"8cab9aa48\",\"type\":\"Column\",\"props\":{},\"children\":[{\"id\":\"b98abb998\",\"type\":\"Logo\",\"props\":{\"width\":120,\"height\":120,\"imgRatio\":1,\"src\":\"https://cdn.smartpushedm.com/frontend/smart-push/staging/1644395920444/1705904366610_253772e1.png?width=120&height=120\",\"href\":\"https://smartpush4.myshoplinestg.com\",\"align\":\"center\",\"containerBackgroundColor\":\"transparent\",\"paddingLeft\":\"20px\",\"paddingRight\":\"20px\",\"paddingTop\":\"20px\",\"paddingBottom\":\"20px\",\"paddingCondition\":true,\"segmentTypeConfig\":1},\"children\":[]},{\"id\":\"8a9b4bafa\",\"type\":\"Logo\",\"props\":{\"width\":120,\"height\":120,\"imgRatio\":1,\"src\":\"https://cdn.smartpushedm.com/frontend/smart-push/staging/1644395920444/1705904366610_253772e1.png?width=120&height=120\",\"href\":\"https://smartpush4.myshoplinestg.com\",\"align\":\"center\",\"containerBackgroundColor\":\"transparent\",\"paddingLeft\":\"20px\",\"paddingRight\":\"20px\",\"paddingTop\":\"20px\",\"paddingBottom\":\"20px\",\"paddingCondition\":true,\"segmentTypeConfig\":1},\"children\":[]}]}]},{\"id\":\"b8bbabad9\",\"type\":\"Footer\",\"props\":{\"backgroundColor\":\"#ffffff\",\"borderLeft\":\"1px none #ffffff\",\"borderRight\":\"1px none #ffffff\",\"borderTop\":\"1px none #ffffff\",\"borderBottom\":\"1px none #ffffff\",\"paddingTop\":\"0px\",\"paddingBottom\":\"0px\",\"paddingLeft\":\"0px\",\"paddingRight\":\"0px\",\"cols\":[12]},\"children\":[{\"id\":\"b3bcabad7\",\"type\":\"Column\",\"props\":{},\"children\":[{\"id\":\"b39b6a94a\",\"type\":\"Subscribe\",\"props\":{\"content\":\"<div class='sp-font-12'><p style=\\\"text-align: center; \\\" data-mce-style=\\\"text-align: center; \\\"><em><span class='sp-font-12' style=\\\"font-size: 12px; color: rgb(122, 132, 153);\\\" data-mce-style=\\\"font-size: 12px; color: #7a8499;\\\">Please add us to your email contacts list to receive exclusive recommendations!</span></em></p><p style=\\\"text-align: center; \\\" data-mce-style=\\\"text-align: center; \\\"><em><span class='sp-font-12' style=\\\"font-size: 12px; color: rgb(122, 132, 153);\\\" data-mce-style=\\\"font-size: 12px; color: #7a8499;\\\">You are receiving this message from [[shopName]] because you have signed up for subscriptions to receive information about products, services, and campaigns.</span></em></p></div><div class=\\\"sp-font-12\\\" style=\\\"color: rgb(122, 132, 153); font-family: arial, helvetica, sans-serif, Arial, Helvetica, sans-serif; font-size: 12px; text-align: center; margin-top: 12px;padding-left: 10px; padding-right: 10px; padding-bottom: 20px;\\\"><div>Questions? Please <span style=color:#479EEF;text-decoration:underline>contact us</span>, we are glad to help.</div><div>If you don't want to receive our message, just <span style=color:#479EEF;text-decoration:underline>click here</span> to cancel the subscription.</div></div><div class=\\\"sp-font-12\\\" style=\\\"color: rgb(122, 132, 153); font-size: 12px; text-align: center; font-style: oblique;\\\">Questions? Please <a href=[[customerEmail]] style=\\\"color:#479EEF;text-decoration:underline\\\" rel=\\\"noreferrer\\\">contact us</a>, we are glad to help.</div><div class=\\\"sp-font-12\\\" style=\\\"color: rgb(122, 132, 153); font-size: 12px; text-align: center; font-style: oblique;\\\">If you don't want to receive our message, just <a href=[[unsubscribe.url]] target=\\\"_blank\\\" style=\\\"color:#479EEF;text-decoration:underline\\\" rel=\\\"noreferrer\\\">click here</a> to cancel the subscription.</div>\",\"containerBackgroundColor\":\"transparent\"},\"children\":[]}]}]}],\"extend\":{\"version\":\"1.0.0\",\"updateTime\":\"2025-04-25T10:27:59.497Z\"}}",
|
269
|
-
"currentHtml": "<!doctype html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xmlns:v=\"urn:schemas-microsoft-com:vml\" xmlns:o=\"urn:schemas-microsoft-com:office:office\">\n <head>\n <title></title>\n <!--[if !mso]><!-->\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n <!--<![endif]-->\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n <style type=\"text/css\">\n #outlook a { padding:0; }\n body { margin:0;padding:0;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%; }\n table, td { border-collapse:collapse;mso-table-lspace:0pt;mso-table-rspace:0pt; }\n img { border:0;line-height:100%; outline:none;text-decoration:none;-ms-interpolation-mode:bicubic; }\n pre{margin: 0;}p{ display: block;margin:0;}\n </style>\n <!--[if mso]>\n <noscript>\n <xml>\n <o:OfficeDocumentSettings>\n <o:AllowPNG/>\n <o:PixelsPerInch>96</o:PixelsPerInch>\n </o:OfficeDocumentSettings>\n </xml>\n </noscript>\n <![endif]-->\n <!--[if lte mso 11]>\n <style type=\"text/css\">\n .mj-outlook-group-fix { width:100% !important; }\n </style>\n <![endif]-->\n \n <!--[if !mso]><!-->\n <link href=\"https://fonts.googleapis.com/css?family=Ubuntu:300,400,500,700\" rel=\"stylesheet\" type=\"text/css\">\n <style type=\"text/css\">\n @import url(https://fonts.googleapis.com/css?family=Ubuntu:300,400,500,700);\n </style>\n <!--<![endif]-->\n\n \n \n <style type=\"text/css\">\n @media only screen and (min-width:480px) {\n .mj-column-per-100 { width:100% !important; max-width: 100%; }\n }\n </style>\n <style media=\"screen and (min-width:480px)\">\n .moz-text-html .mj-column-per-100 { width:100% !important; max-width: 100%; }\n </style>\n \n \n <style type=\"text/css\">\n \n \n </style>\n <style type=\"text/css\">\n @import url(https://fonts.googleapis.com/css?family=Arvo:400|Bodoni+Moda:400|DM+Sans:400|Poppins:400|Hammersmith+One:400|Libre+Baskerville:400|Lexend+Giga:400|Ubuntu:400|Montserrat:400|Nunito:400|News+Cycle:400|Roboto:400|Oswald:400);@import url(https://fonts.googleapis.com/css?family=Asar:400|Bruno+Ace:400|Cantata+One:400|League+Gothic:400|Long+Cang:400|Lovers+Quarrel:400|Nanum+Gothic+Coding:400|Nanum+Myeongjo:400|Noto+Sans+Kaithi:400|Noto+Sans+Kannada:400|Noto+Sans+Math:400|Noto+Sans+Syloti+Nagri:400|Noto+Serif+JP:400|Playwrite+AT+Guides:400|Saira+Extra+Condensed:400|Tsukimi+Rounded:400|Waiting+for+the+Sunrise:400);h1,\nh2,\nh3,\nh4,\nh5 {\n font-weight: bold;\n margin-bottom: 0;\n}\np {\n margin-top: 0;\n margin-bottom: 0;\n min-height: 1em;\n}\n\nul {\n margin-bottom: 0;\n}\n\nth {\n font-weight: bold;\n}\n\na {\n text-decoration: none;\n}\n\na::-webkit-scrollbar {\n -webkit-appearance: none;\n}\n\na::-webkit-scrollbar:horizontal {\n max-height: 8px;\n}\n\na::-webkit-scrollbar-thumb {\n border-radius: 8px;\n background-color: rgba(0, 0, 0, 0.5);\n}\n\nul,\nol,\ndl {\n margin-top: 16px !important;\n}\n\npre {\n word-break: break-word;\n padding: 0;\n margin: 0;\n white-space: inherit !important;\n}\n\npre p {\n word-break: break-word;\n padding: 0;\n margin: 0;\n color: #000000;\n}\n\nspan[style*='color'] a {\n color: inherit;\n}\n\n.mj-column-no-meida-100{\n width: 100% !important;\n}\n.mj-column-no-meida-50{\n width: 50% !important;\n}\n.mj-column-no-meida-33-333333333333336{\n width: 33.333333333333336% !important;\n}\n.mj-column-no-meida-25{\n width: 25% !important;\n}\n\n.white-nowrap {\n white-space: nowrap !important;\n}\n\n/* 间距 */\n.sp-m-p-0 {\n margin: 0;\n padding: 0;\n}\n\n.nps-content-span a {\n color: inherit !important;\n}.sp-font-12 {\n font-size: 12px !important;\n}\n\n.sp-font-14 {\n font-size: 14px !important;\n}\n\n.sp-font-16 {\n font-size: 16px !important;\n}\n\n.sp-font-18 {\n font-size: 18px !important;\n}\n\n.sp-font-20 {\n font-size: 20px !important;\n}\n\n.sp-font-22 {\n font-size: 22px !important;\n}\n\n.sp-font-24 {\n font-size: 24px !important;\n}\n\n.sp-font-26 {\n font-size: 26px !important;\n}\n\n.sp-font-28 {\n font-size: 28px !important;\n}\n\n.sp-font-30 {\n font-size: 30px !important;\n}\n\n.sp-font-32 {\n font-size: 32px !important;\n}\n\n.sp-font-34 {\n font-size: 34px !important;\n}\n\n.sp-font-36 {\n font-size: 36px !important;\n}\n\n.sp-font-38 {\n font-size: 38px !important;\n}\n\n.sp-font-40 {\n font-size: 40px !important;\n}\n\n.sp-font-42 {\n font-size: 42px !important;\n}\n\n.sp-font-44 {\n font-size: 44px !important;\n}\n\n.sp-font-46 {\n font-size: 46px !important;\n}\n\n.sp-font-48 {\n font-size: 48px !important;\n}\n\n.sp-font-50 {\n font-size: 50px !important;\n}\n\n.sp-font-52 {\n font-size: 52px !important;\n}\n\n.sp-font-54 {\n font-size: 54px !important;\n}\n\n.sp-font-56 {\n font-size: 56px !important;\n}\n\n.sp-font-58 {\n font-size: 58px !important;\n}\n\n.sp-font-60 {\n font-size: 60px !important;\n}\n\n.sp-image-icon {\n width: 50px;\n}\n\n@media only screen and (max-width:600px) {\n\n .sp-font-12 {\n font-size: 12px !important;\n }\n\n .sp-font-14 {\n font-size: 12px !important;\n }\n\n .sp-font-16 {\n font-size: 12px !important;\n }\n\n .sp-font-18 {\n font-size: 13px !important;\n }\n\n .sp-font-20 {\n font-size: 15px !important;\n }\n\n .sp-font-22 {\n font-size: 16px !important;\n }\n\n .sp-font-24 {\n font-size: 18px !important;\n }\n\n .sp-font-26 {\n font-size: 19px !important;\n }\n\n .sp-font-28 {\n font-size: 21px !important;\n }\n\n .sp-font-30 {\n font-size: 22px !important;\n }\n\n .sp-font-32 {\n font-size: 24px !important;\n }\n\n .sp-font-34 {\n font-size: 25px !important;\n }\n\n .sp-font-36 {\n font-size: 27px !important;\n }\n\n .sp-font-38 {\n font-size: 28px !important;\n }\n\n .sp-font-40 {\n font-size: 30px !important;\n }\n\n .sp-font-42 {\n font-size: 31px !important;\n }\n\n .sp-font-44 {\n font-size: 32px !important;\n }\n\n .sp-font-46 {\n font-size: 33px !important;\n }\n\n .sp-font-48 {\n font-size: 34px !important;\n }\n\n .sp-font-50 {\n font-size: 35px !important;\n }\n\n .sp-font-52 {\n font-size: 36px !important;\n }\n\n .sp-font-54 {\n font-size: 37px !important;\n }\n\n .sp-font-56 {\n font-size: 38px !important;\n }\n\n .sp-font-58 {\n font-size: 39px !important;\n }\n\n .sp-font-60 {\n font-size: 40px !important;\n }\n\n .sp-image-icon {\n width: 28px !important;\n }\n\n}@media only screen and (max-width:480px) {\n\n .sp-img-h-1-TwoVertical-11,\n .sp-img-h-1-TwoHorizontalColumns-11 {\n height: 170px !important;\n }\n\n .sp-img-h-1-TwoVertical-23,\n .sp-img-h-1-TwoHorizontalColumns-23 {\n height: 243px !important;\n }\n\n .sp-img-h-1-TwoVertical-34,\n .sp-img-h-1-TwoHorizontalColumns-34 {\n height: 227px !important;\n }\n\n .sp-img-h-1-TwoVertical-43,\n .sp-img-h-1-TwoHorizontalColumns-43 {\n height: 127px !important;\n }\n\n .sp-img-h-1-ThreeHorizontalColumns-11 {\n height: 109px !important;\n }\n\n .sp-img-h-1-ThreeHorizontalColumns-23 {\n height: 163px !important;\n }\n\n .sp-img-h-1-ThreeHorizontalColumns-34 {\n height: 145px !important;\n }\n\n .sp-img-h-1-ThreeHorizontalColumns-43 {\n height: 81px !important;\n }\n\n .sp-img-h-2-TwoVertical-11 {\n height: 164px !important;\n }\n\n .sp-img-h-2-TwoVertical-23 {\n height: 246px !important;\n }\n\n .sp-img-h-2-TwoVertical-34 {\n height: 218px !important;\n }\n\n .sp-img-h-2-TwoVertical-43 {\n height: 123px !important;\n }\n\n .sp-img-h-2-ThreeHorizontalColumns-11,\n .sp-img-h-2-TwoHorizontalColumns-11 {\n height: 76px !important;\n }\n\n .sp-img-h-2-ThreeHorizontalColumns-23,\n .sp-img-h-2-TwoHorizontalColumns-23 {\n height: 113px !important;\n }\n\n .sp-img-h-2-ThreeHorizontalColumns-34,\n .sp-img-h-2-TwoHorizontalColumns-34 {\n height: 101px !important;\n }\n\n .sp-img-h-2-ThreeHorizontalColumns-43,\n .sp-img-h-2-TwoHorizontalColumns-43 {\n height: 57px !important;\n }\n}@media only screen and (min-width: 320px) and (max-width: 599px) {\n .mj-w-50 {\n width: 50% !important;\n max-width: 50%;\n }\n}\n\n@media only screen and (max-width: 480px) {\n .shop-white-mobile {\n width: 100% !important;\n }\n .mj-td-force-100{\n display: inline-block;\n width: 100% !important;\n }\n\n .mj-ImageText-screen {\n width: 100% !important;\n }\n .mj-ImageText-img {\n margin: 0 auto;\n }\n\n .mj-ImageText-margin {\n margin: 0 !important;\n }\n\n .mj-ImageText-margin-zero {\n margin: 0 5px 0 0 !important;\n }\n\n .mj-ImageText-margin-one {\n margin: 0 0 0 5px !important;\n }\n .mj-column-per-50-force {\n width: 50% !important;\n max-width: 50%;\n }\n}\n\n@media only screen and (min-width: 480px) {\n .mj-imagetext-force-100{\n display: inline-block;\n width: 100% !important;\n }\n .mj-column-per-100 {\n width: 100% !important;\n max-width: 100%;\n }\n\n .mj-column-per-50 {\n width: 50% !important;\n max-width: 50%;\n }\n\n .mj-column-per-33-333333333333336 {\n width: 33.333333333333336% !important;\n max-width: 33.333333333333336%;\n }\n\n .mj-column-per-25 {\n width: 25% !important;\n max-width: 25%;\n }\n\n\n .mg-column-per-46-5 {\n width: 46.5% !important;\n max-width: 46.5%;\n }\n\n .mj-AbandonProduct-cloum-align-center {\n align-items: flex-start !important;\n }\n\n\n .mj-OrderInformation-padding-top-220 {\n padding-top: 20px !important;\n }\n\n .mj-OrderInformation-float-left {\n float: left !important;\n }\n}@media only screen and (max-width: 480px) {\n .mt-1{\n margin-top: 1px;\n }\n .mt-2{\n margin-top: 2px;\n }\n .mt-3{\n margin-top: 3px;\n }\n .mt-4{\n margin-top: 4px;\n }\n .mt-5{\n margin-top: 5px;\n }\n .mt-6{\n margin-top: 7px;\n }\n .mt-8{\n margin-top: 9px;\n }\n .mt-10{\n margin-top: 10px;\n }\n\n}\n </style>\n \n </head>\n <body style=\"word-spacing:normal;background-color:#EAEDF1;\">\n \n \n <div\n style=\"background-color:#EAEDF1;\"\n >\n <table className=\"pv-stage\">\n <tbody>\n <tr>\n <td style=\"display:table-column;\"><div style=\"width:1px; height:1px;\"><img style=\"width:1px; height:1px;\" width=\"1\" src=\"${SP_OPEN_EMAIL_URL}\" />\n </div></td>\n </tr>\n </tbody>\n </table><div mso-hide: all; position: fixed; height: 0; max-height: 0; overflow: hidden; font-size: 0; style=\"display:none;\">${emailSubtitle}</div>\n \n <!--[if mso | IE]><table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"\" role=\"presentation\" style=\"width:600px;\" width=\"600\" bgcolor=\"#ffffff\" ><tr><td style=\"line-height:0px;font-size:0px;mso-line-height-rule:exactly;\"><![endif]-->\n \n \n <div style=\"background:#ffffff;background-color:#ffffff;margin:0px auto;max-width:600px;\">\n \n <table\n align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" role=\"presentation\" style=\"background:#ffffff;background-color:#ffffff;width:100%;\"\n >\n <tbody>\n <tr>\n <td\n style=\"border-bottom:1px none #ffffff;border-left:1px none #ffffff;border-right:1px none #ffffff;border-top:1px none #ffffff;direction:ltr;font-size:0px;padding:20px 0;padding-bottom:0px;padding-left:0px;padding-right:0px;padding-top:0px;text-align:center;\"\n >\n <!--[if mso | IE]><table role=\"presentation\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr><td class=\"\" style=\"vertical-align:top;width:598px;\" ><![endif]-->\n \n <div\n class=\"mj-column-per-100 mj-outlook-group-fix\" style=\"font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;\"\n >\n \n <table\n border=\"0\" cellpadding=\"0\" cellspacing=\"0\" role=\"presentation\" style=\"vertical-align:top;\" width=\"100%\"\n >\n <tbody>\n \n <tr>\n <td\n align=\"left\" style=\"font-size:0px;padding:10px 25px;padding-top:10px;padding-right:10px;padding-bottom:10px;padding-left:10px;word-break:break-word;\"\n >\n \n <table\n cellpadding=\"0\" cellspacing=\"0\" width=\"100%\" border=\"0\" style=\"color:#000000;font-family:Ubuntu, Helvetica, Arial, sans-serif;font-size:13px;line-height:1.5;table-layout:fixed;width:100%;border:none;\"\n >\n <tr style=\"background-color:transparent;\"><td style=\"vertical-align:top;\" valign=\"top\"><table style=\"border-collapse: collapse;width:100%; table-layout: fixed;\"><tbody ><tr><td class=\"sp-font-16\" style=\"text-align:left;background-color:transparent;padding-left:10px;padding-right:10px;padding-top:0px;padding-bottom:0px;font-size:16px;border-style:none;border-color:#ffffff;border-width:1px;\"><pre class=\"mq_AS\" style=\"white-space: inherit;word-break: break-word;\"><p style=\"line-height: 3; text-align: right;\"><span style=\"color: #000000; font-size: 12px; font-family: arial, sans-serif;\"><a style=\"color: #000000;\" href=\"${viewInWebApiUrl}\">Can't see the email? Please <span style=\"color: #3598db;\">click here</span></a></span></p></pre></td></tr></tbody></table></td></tr>\n </table>\n \n </td>\n </tr>\n \n </tbody>\n </table>\n \n </div>\n \n <!--[if mso | IE]></td></tr></table><![endif]-->\n </td>\n </tr>\n </tbody>\n </table>\n \n </div>\n \n \n <!--[if mso | IE]></td></tr></table><table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"\" role=\"presentation\" style=\"width:600px;\" width=\"600\" bgcolor=\"#ffffff\" ><tr><td style=\"line-height:0px;font-size:0px;mso-line-height-rule:exactly;\"><![endif]-->\n \n \n <div style=\"background:#ffffff;background-color:#ffffff;margin:0px auto;max-width:600px;\">\n \n <table\n align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" role=\"presentation\" style=\"background:#ffffff;background-color:#ffffff;width:100%;\"\n >\n <tbody>\n <tr>\n <td\n style=\"border-bottom:1px none #ffffff;border-left:1px none #ffffff;border-right:1px none #ffffff;border-top:1px none #ffffff;direction:ltr;font-size:0px;padding:20px 0;padding-bottom:0px;padding-left:0px;padding-right:0px;padding-top:0px;text-align:center;\"\n >\n <!--[if mso | IE]><table role=\"presentation\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr><td class=\"\" style=\"vertical-align:top;width:598px;\" ><![endif]-->\n \n <div\n class=\"mj-column-per-100 mj-outlook-group-fix\" style=\"font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;\"\n >\n \n <table\n border=\"0\" cellpadding=\"0\" cellspacing=\"0\" role=\"presentation\" style=\"vertical-align:top;\" width=\"100%\"\n >\n <tbody>\n \n <tr>\n <td\n align=\"left\" style=\"background:transparent;font-size:0px;padding:0;word-break:break-word;\"\n >\n \n <table\n cellpadding=\"0\" cellspacing=\"0\" width=\"100%\" border=\"0\" style=\"color:#000000;font-family:Ubuntu, Helvetica, Arial, sans-serif;font-size:13px;line-height:22px;table-layout:auto;width:100%;border:0;\"\n >\n <tr>\n <td align=\"center\">\n <table style=\"padding:0;margin:0;clear:both;\">\n <tbody style=\"padding:0;margin:0;clear:both;\">\n <tr style=\"padding:0;margin:0;clear:both;\">\n <td style=\"padding:0;margin:0;clear:both;width:120;padding-bottom:20px;padding-left:20px;padding-right:20px;padding-top:20px;\">\n <a href=\"https://smartpush4.myshoplinestg.com\" style=\"padding:0;margin:0;clear:both;\"><img src=\"https://cdn.smartpushedm.com/frontend/smart-push/staging/1644395920444/1705904366610_253772e1.png?width=120&height=120\" style=\"width:120px;max-width:100%;display:block;outline:none;text-decoration:none;height:auto;font-size:0px;object-fit:cover;\" width=\"120\" /></a>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </table>\n \n </td>\n </tr>\n \n <tr>\n <td\n align=\"left\" style=\"background:transparent;font-size:0px;padding:0;word-break:break-word;\"\n >\n \n <table\n cellpadding=\"0\" cellspacing=\"0\" width=\"100%\" border=\"0\" style=\"color:#000000;font-family:Ubuntu, Helvetica, Arial, sans-serif;font-size:13px;line-height:22px;table-layout:auto;width:100%;border:0;\"\n >\n <tr>\n <td align=\"center\">\n <table style=\"padding:0;margin:0;clear:both;\">\n <tbody style=\"padding:0;margin:0;clear:both;\">\n <tr style=\"padding:0;margin:0;clear:both;\">\n <td style=\"padding:0;margin:0;clear:both;width:120;padding-bottom:20px;padding-left:20px;padding-right:20px;padding-top:20px;\">\n <a href=\"https://smartpush4.myshoplinestg.com\" style=\"padding:0;margin:0;clear:both;\"><img src=\"https://cdn.smartpushedm.com/frontend/smart-push/staging/1644395920444/1705904366610_253772e1.png?width=120&height=120\" style=\"width:120px;max-width:100%;display:block;outline:none;text-decoration:none;height:auto;font-size:0px;object-fit:cover;\" width=\"120\" /></a>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </table>\n \n </td>\n </tr>\n \n </tbody>\n </table>\n \n </div>\n \n <!--[if mso | IE]></td></tr></table><![endif]-->\n </td>\n </tr>\n </tbody>\n </table>\n \n </div>\n \n \n <!--[if mso | IE]></td></tr></table><table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"\" role=\"presentation\" style=\"width:600px;\" width=\"600\" bgcolor=\"#ffffff\" ><tr><td style=\"line-height:0px;font-size:0px;mso-line-height-rule:exactly;\"><![endif]-->\n \n \n <div style=\"background:#ffffff;background-color:#ffffff;margin:0px auto;max-width:600px;\">\n \n <table\n align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" role=\"presentation\" style=\"background:#ffffff;background-color:#ffffff;width:100%;\"\n >\n <tbody>\n <tr>\n <td\n style=\"border-bottom:1px none #ffffff;border-left:1px none #ffffff;border-right:1px none #ffffff;border-top:1px none #ffffff;direction:ltr;font-size:0px;padding:20px 0;padding-bottom:0px;padding-left:0px;padding-right:0px;padding-top:0px;text-align:center;\"\n >\n <!--[if mso | IE]><table role=\"presentation\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr><td class=\"\" style=\"vertical-align:top;width:598px;\" ><![endif]-->\n \n <div\n class=\"mj-column-per-100 mj-outlook-group-fix\" style=\"font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;\"\n >\n \n <table\n border=\"0\" cellpadding=\"0\" cellspacing=\"0\" role=\"presentation\" style=\"vertical-align:top;\" width=\"100%\"\n >\n <tbody>\n \n <tr>\n <td\n align=\"left\" style=\"font-size:0px;padding:0;word-break:break-word;\"\n >\n \n <table\n cellpadding=\"0\" cellspacing=\"0\" width=\"100%\" border=\"0\" style=\"color:#000000;font-family:Ubuntu, Helvetica, Arial, sans-serif;font-size:13px;line-height:22px;table-layout:fixed;width:100%;border:none;\"\n >\n <table style=\"margin:0;padding:0;width:100%;table-layout:fixed\" class=\"\" sp-id=\"subscribe-area-b39b6a94a\"><tbody><tr style=\"width:100%\"><td style=\"margin:0;padding:0;width:100%;text-align:center;padding-top:20px;padding-left:20px;padding-right:20px;padding-bottom:20px;background-color:transparent;font-family:arial,helvetica,sans-serif,Arial, Helvetica, sans-serif\" class=\"Subscribe\"><table cellPadding=\"0\" cellSpacing=\"0\" style=\"width:100%\"><tbody><tr><td align=\"center\" class=\"sp-font-16\" valign=\"middle\" style=\"padding-left:10px;padding-right:10px;padding-top:10px;text-align:left;font-size:16px\"><div><div class='sp-font-12'><p style=\"text-align: center; \" data-mce-style=\"text-align: center; \"><em><span class='sp-font-12' style=\"font-size: 12px; color: rgb(122, 132, 153);\" data-mce-style=\"font-size: 12px; color: #7a8499;\">Please add us to your email contacts list to receive exclusive recommendations!</span></em></p><p style=\"text-align: center; \" data-mce-style=\"text-align: center; \"><em><span class='sp-font-12' style=\"font-size: 12px; color: rgb(122, 132, 153);\" data-mce-style=\"font-size: 12px; color: #7a8499;\">You are receiving this message from [[shopName]] because you have signed up for subscriptions to receive information about products, services, and campaigns.</span></em></p></div><div class=\"sp-font-12\" style=\"color: rgb(122, 132, 153); font-family: arial, helvetica, sans-serif, Arial, Helvetica, sans-serif; font-size: 12px; text-align: center; margin-top: 12px;padding-left: 10px; padding-right: 10px; padding-bottom: 20px;\"><div>Questions? Please <span style=color:#479EEF;text-decoration:underline>contact us</span>, we are glad to help.</div><div>If you don't want to receive our message, just <span style=color:#479EEF;text-decoration:underline>click here</span> to cancel the subscription.</div></div><div class=\"sp-font-12\" style=\"color: rgb(122, 132, 153); font-size: 12px; text-align: center; font-style: oblique;\">Questions? Please <html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body><a href=\"mailto:[[customerEmail]]\" style=\"color:#479EEF;text-decoration:underline\" rel=\"noreferrer\">contact us</a></body></html>, we are glad to help.</div><div class=\"sp-font-12\" style=\"color: rgb(122, 132, 153); font-size: 12px; text-align: center; font-style: oblique;\">If you don't want to receive our message, just <html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body><a href=\"[[unsubscribe.url]]\" target=\"_blank\" style=\"color:#479EEF;text-decoration:underline\" rel=\"noreferrer\">click here</a></body></html> to cancel the subscription.</div></div></td></tr><tr><td align=\"center\" valign=\"middle\" height=\"20\" style=\"font-size:12px;font-family:arial,helvetica,sans-serif,Arial, Helvetica, sans-serif;padding-left:10px;padding-right:10px;padding-bottom:20px\"></td></tr><div><tr style=\"${hide_logo}\" sp-id=\"subscribe-dom-b39b6a94a\">\n <td class='sp-font-16' style=\"padding-left:20px;padding-right:20px;padding-top:20px;text-align:center;font-size:16px\" >\n <div style=\"border-top: 1px solid #EEF1F6\">\n <img src=\"https://cdn.smartpushedm.com/frontend/smart-push/product/image/1731577171577_83853d55.png\" style=\"padding: 10px;vertical-align: middle;width: 158px;\"alt=\"\" />\n </div>\n <p style=\"color:#343434;font-size:12px\">Providing content services for [[shopName]]</p>\n </td>\n </tr></div></tbody></table></td></tr></tbody></table>\n </table>\n \n </td>\n </tr>\n \n </tbody>\n </table>\n \n </div>\n \n <!--[if mso | IE]></td></tr></table><![endif]-->\n </td>\n </tr>\n </tbody>\n </table>\n \n </div>\n \n \n <!--[if mso | IE]></td></tr></table><![endif]-->\n \n \n </div>\n \n </body>\n</html>\n ",
|
270
|
-
"previewJsonSchema": "{\"id\":\"a4a9fba2a\",\"type\":\"Stage\",\"props\":{\"backgroundColor\":\"#EAEDF1\",\"width\":\"600px\",\"fullWidth\":\"normal-width\"},\"children\":[{\"id\":\"84ba788da\",\"type\":\"Header\",\"props\":{\"backgroundColor\":\"#ffffff\",\"borderLeft\":\"1px none #ffffff\",\"borderRight\":\"1px none #ffffff\",\"borderTop\":\"1px none #ffffff\",\"borderBottom\":\"1px none #ffffff\",\"paddingTop\":\"0px\",\"paddingBottom\":\"0px\",\"paddingLeft\":\"0px\",\"paddingRight\":\"0px\",\"cols\":[12]},\"children\":[{\"id\":\"98d909a48\",\"type\":\"Column\",\"props\":{},\"children\":[{\"id\":\"8298cb99a\",\"type\":\"TextSet\",\"props\":{\"list\":[{\"borderWidth\":\"1px\",\"borderStyle\":\"none\",\"content\":\"<p style=\\\"line-height: 3; text-align: right;\\\"><span style=\\\"color: #000000; font-size: 12px; font-family: arial, sans-serif;\\\"><a style=\\\"color: #000000;\\\" href=\\\"${viewInWebApiUrl}\\\">Can't see the email? Please <span style=\\\"color: #3598db;\\\">click here</span></a></span></p>\",\"paddingLeft\":\"10px\",\"paddingRight\":\"10px\",\"paddingTop\":\"0px\",\"paddingBottom\":\"0px\",\"borderColor\":\"#ffffff\"}],\"containerBackgroundColor\":\"transparent\",\"paddingLeft\":\"10px\",\"paddingRight\":\"10px\",\"paddingTop\":\"10px\",\"paddingBottom\":\"10px\"},\"children\":[]}]}]},{\"id\":\"84ba7bbda\",\"type\":\"Section\",\"props\":{\"backgroundColor\":\"#ffffff\",\"borderLeft\":\"1px none #ffffff\",\"borderRight\":\"1px none #ffffff\",\"borderTop\":\"1px none #ffffff\",\"borderBottom\":\"1px none #ffffff\",\"paddingTop\":\"0px\",\"paddingBottom\":\"0px\",\"paddingLeft\":\"0px\",\"paddingRight\":\"0px\",\"cols\":[12]},\"children\":[{\"id\":\"8cab9aa48\",\"type\":\"Column\",\"props\":{},\"children\":[{\"id\":\"b98abb998\",\"type\":\"Logo\",\"props\":{\"width\":120,\"height\":120,\"imgRatio\":1,\"src\":\"https://cdn.smartpushedm.com/frontend/smart-push/staging/1644395920444/1705904366610_253772e1.png?width=120&height=120\",\"href\":\"https://smartpush4.myshoplinestg.com\",\"align\":\"center\",\"containerBackgroundColor\":\"transparent\",\"paddingLeft\":\"20px\",\"paddingRight\":\"20px\",\"paddingTop\":\"20px\",\"paddingBottom\":\"20px\",\"paddingCondition\":true,\"segmentTypeConfig\":1},\"children\":[]},{\"id\":\"8a9b4bafa\",\"type\":\"Logo\",\"props\":{\"width\":120,\"height\":120,\"imgRatio\":1,\"src\":\"https://cdn.smartpushedm.com/frontend/smart-push/staging/1644395920444/1705904366610_253772e1.png?width=120&height=120\",\"href\":\"https://smartpush4.myshoplinestg.com\",\"align\":\"center\",\"containerBackgroundColor\":\"transparent\",\"paddingLeft\":\"20px\",\"paddingRight\":\"20px\",\"paddingTop\":\"20px\",\"paddingBottom\":\"20px\",\"paddingCondition\":true,\"segmentTypeConfig\":1},\"children\":[]}]}]},{\"id\":\"b8bbabad9\",\"type\":\"Footer\",\"props\":{\"backgroundColor\":\"#ffffff\",\"borderLeft\":\"1px none #ffffff\",\"borderRight\":\"1px none #ffffff\",\"borderTop\":\"1px none #ffffff\",\"borderBottom\":\"1px none #ffffff\",\"paddingTop\":\"0px\",\"paddingBottom\":\"0px\",\"paddingLeft\":\"0px\",\"paddingRight\":\"0px\",\"cols\":[12]},\"children\":[{\"id\":\"b3bcabad7\",\"type\":\"Column\",\"props\":{},\"children\":[{\"id\":\"b39b6a94a\",\"type\":\"Subscribe\",\"props\":{\"content\":\"<div class='sp-font-12'><p style=\\\"text-align: center; \\\" data-mce-style=\\\"text-align: center; \\\"><em><span class='sp-font-12' style=\\\"font-size: 12px; color: rgb(122, 132, 153);\\\" data-mce-style=\\\"font-size: 12px; color: #7a8499;\\\">Please add us to your email contacts list to receive exclusive recommendations!</span></em></p><p style=\\\"text-align: center; \\\" data-mce-style=\\\"text-align: center; \\\"><em><span class='sp-font-12' style=\\\"font-size: 12px; color: rgb(122, 132, 153);\\\" data-mce-style=\\\"font-size: 12px; color: #7a8499;\\\">You are receiving this message from [[shopName]] because you have signed up for subscriptions to receive information about products, services, and campaigns.</span></em></p></div><div class=\\\"sp-font-12\\\" style=\\\"color: rgb(122, 132, 153); font-family: arial, helvetica, sans-serif, Arial, Helvetica, sans-serif; font-size: 12px; text-align: center; margin-top: 12px;padding-left: 10px; padding-right: 10px; padding-bottom: 20px;\\\"><div>Questions? Please <span style=color:#479EEF;text-decoration:underline>contact us</span>, we are glad to help.</div><div>If you don't want to receive our message, just <span style=color:#479EEF;text-decoration:underline>click here</span> to cancel the subscription.</div></div><div class=\\\"sp-font-12\\\" style=\\\"color: rgb(122, 132, 153); font-size: 12px; text-align: center; font-style: oblique;\\\">Questions? Please <a href=[[customerEmail]] style=\\\"color:#479EEF;text-decoration:underline\\\" rel=\\\"noreferrer\\\">contact us</a>, we are glad to help.</div><div class=\\\"sp-font-12\\\" style=\\\"color: rgb(122, 132, 153); font-size: 12px; text-align: center; font-style: oblique;\\\">If you don't want to receive our message, just <a href=[[unsubscribe.url]] target=\\\"_blank\\\" style=\\\"color:#479EEF;text-decoration:underline\\\" rel=\\\"noreferrer\\\">click here</a> to cancel the subscription.</div>\",\"containerBackgroundColor\":\"transparent\"},\"children\":[]}]}]}],\"extend\":{\"version\":\"1.0.0\",\"updateTime\":\"2025-04-25T10:27:59.497Z\"}}",
|
271
|
-
"generatedHtml": False,
|
272
|
-
"templateUrl": "https://cdn2.smartpushedm.com/material_ec2/2024-07-08/c316faf4623d4638893a127e150377f0/v2-545b3673f3db07397babfb71755ecee0_720w.png",
|
273
|
-
"sendStrategy": "NOW",
|
274
|
-
"totalReceiver": 0,
|
275
|
-
"utmConfigEnable": False,
|
276
|
-
"subtitle": "",
|
277
|
-
"language": "en",
|
278
|
-
"languageName": "English",
|
279
|
-
"timezone": "Asia/Macao",
|
280
|
-
"timezoneGmt": "GMT+08:00",
|
281
|
-
"type": "FLOW",
|
282
|
-
"relId": "FLOW6966717528141252274",
|
283
|
-
"parentId": "0",
|
284
|
-
"nodeId": "15630c25-75fa-4456-a6ee-a2bd1e3e64a1",
|
285
|
-
"version": "2",
|
286
|
-
"nodeOrder": 0,
|
287
|
-
"sendType": "EMAIL",
|
288
|
-
"productInfos": [],
|
289
|
-
"blocks": [
|
290
|
-
{
|
291
|
-
"domId": "subscribe-dom-b39b6a94a",
|
292
|
-
"blockId": "",
|
293
|
-
"areaId": "",
|
294
|
-
"type": "SP_LOGO",
|
295
|
-
"column": 1,
|
296
|
-
"fillStyle": 0,
|
297
|
-
"ratio": "",
|
298
|
-
"currencySymbolShow": 1,
|
299
|
-
"thousandthSep": True,
|
300
|
-
"decimalPoint": 2
|
301
|
-
}
|
302
|
-
],
|
303
|
-
"discountCodes": [],
|
304
|
-
"reviews": [],
|
305
|
-
"awards": [],
|
306
|
-
"selectProducts": [],
|
307
|
-
"createSource": "BUILD_ACTIVITY",
|
308
|
-
"contentChange": True,
|
309
|
-
"activityChange": False,
|
310
|
-
"imageVersion": "1745576879501",
|
311
|
-
"subActivityList": [],
|
312
|
-
"warmupPack": 0,
|
313
|
-
"boosterEnabled": False,
|
314
|
-
"smartSending": True,
|
315
|
-
"boosterCreated": False,
|
316
|
-
"gmailPromotion": False,
|
317
|
-
"sendTimeType": "FIXED",
|
318
|
-
"sendTimezone": "B_TIMEZONE",
|
319
|
-
"sendTimeDelay": False,
|
320
|
-
"sendOption": 1,
|
321
|
-
"hasUserBlock": False,
|
322
|
-
"hasAutoBlock": False,
|
323
|
-
"smsSendDelay": True,
|
324
|
-
"payFunctionList": [],
|
325
|
-
"minSendTime": "2025-04-25 18:27:37",
|
326
|
-
"completedCount": 1,
|
327
|
-
"skippedCount": 0,
|
328
|
-
"openRate": 1,
|
329
|
-
"clickRate": 0,
|
330
|
-
"orderIncome": 0,
|
331
|
-
"openDistinctUserRate": 1,
|
332
|
-
"clickDistinctUserRate": 0
|
333
|
-
},
|
334
|
-
"completedCount": 1,
|
335
|
-
"skippedCount": 0,
|
336
|
-
"openRate": 1,
|
337
|
-
"clickRate": 0,
|
338
|
-
"orderIncome": 0,
|
339
|
-
"openDistinctUserRate": 1,
|
340
|
-
"clickDistinctUserRate": 0
|
341
|
-
},
|
342
|
-
"id": "15630c25-75fa-4456-a6ee-a2bd1e3e64a1"
|
343
|
-
}
|
344
|
-
],
|
345
|
-
"showDataStartTime": None,
|
346
|
-
"showDataEndTime": None
|
347
|
-
}
|
348
|
-
# print(ccc)
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|