mirror of
https://gitee.com/acl-dev/acl.git
synced 2024-12-02 11:57:43 +08:00
fixed one bug in redis_client_cluster for set_password; add feature in mime class
This commit is contained in:
parent
ba42c843c5
commit
dcf7d25171
@ -1,6 +1,14 @@
|
||||
修改历史列表:
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
414) 2016.3.17
|
||||
414.1) bugfix: redis_client_cluster 类中的 set_password 方法在设置集群中节点
|
||||
密码时,该方法的调用与添加集群节点的方法(set)与顺序相关,容易造成误操作导致密码设计无效
|
||||
|
||||
413) 2016.3.16
|
||||
413.1) feature: queue_file::create 在产生唯一 ID 时,可以明显区分出进程号
|
||||
以便于调试检查当前队列文件所属的进程
|
||||
|
||||
412) 2016.3.11
|
||||
412.1) bugfix: json_node::is_array 判断方式有问题
|
||||
|
||||
|
@ -134,10 +134,11 @@ public:
|
||||
* @param enableDecode {bool} 转储时是否自动进行解码
|
||||
* @param toCharset {const char*} 目标字符集
|
||||
* @param off {off_t} 调用者希望给邮件结点附加的相对偏移量
|
||||
* @param all {bool} 提取所有包括 message/application/image 在内的所有节点
|
||||
* @return {const std::list<mime_attach*>&}
|
||||
*/
|
||||
const std::list<mime_attach*>& get_attachments(bool enableDecode = true,
|
||||
const char* toCharset = "gb2312", off_t off = 0);
|
||||
const char* toCharset = "gb2312", off_t off = 0, bool all = true);
|
||||
|
||||
/**
|
||||
* 获得图片列表
|
||||
|
@ -3,7 +3,8 @@
|
||||
#include "acl_cpp/stdlib/pipe_stream.hpp"
|
||||
|
||||
namespace acl {
|
||||
class string;
|
||||
|
||||
class string;
|
||||
|
||||
class ACL_CPP_API mime_code : public pipe_stream
|
||||
{
|
||||
|
@ -48,7 +48,7 @@ public:
|
||||
* 函数返回 MIME_CTYPE_IMAGE (在 mime_define.hpp 中定义)
|
||||
* @return {int} 返回 mime_define.hpp 中定义的 MIME_CTYPE_XXX
|
||||
*/
|
||||
int get_ctype() const
|
||||
int get_ctype(void) const
|
||||
{
|
||||
return (m_ctype);
|
||||
}
|
||||
@ -63,6 +63,18 @@ public:
|
||||
return (m_stype);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得 Content-Type 中的主类型,以字符串方式表示
|
||||
* @return {const char*} 返回 "" 表示不存在
|
||||
*/
|
||||
const char* get_ctype_s(void) const;
|
||||
|
||||
/**
|
||||
* 获得 Content-Type 中的从类型,以字符串方式表示
|
||||
* @return {const char*} 返回 "" 表示不存在
|
||||
*/
|
||||
const char* get_stype_s(void) const;
|
||||
|
||||
/**
|
||||
* 获得传输编码类型 (对应于 Content-Transfer-Encoding)
|
||||
* @return {int} 返回 mime_define.hpp 中定义的 MIME_ENC_XXX
|
||||
@ -194,14 +206,16 @@ public:
|
||||
* 则说明父结点不存在或父结点的主类型未知
|
||||
* @return {int} MIME_CTYPE_XXX
|
||||
*/
|
||||
int parent_ctype() const;
|
||||
int parent_ctype(void) const;
|
||||
const char* parent_ctype_s(void) const;
|
||||
|
||||
/**
|
||||
* 获得父结点的从类型 (MIME_STYPE_XXX), 如果为 MIME_STYPE_OTHER
|
||||
* 则说明父结点不存在或父结点的从类型未知
|
||||
* @return {int} MIME_STYPE_XXX
|
||||
*/
|
||||
int parent_stype() const;
|
||||
int parent_stype(void) const;
|
||||
const char* parent_stype_s(void) const;
|
||||
|
||||
/**
|
||||
* 获得父结点的编码类型 (MIME_ENC_XXX), 如果返回值为 MIME_ENC_OTHER
|
||||
|
@ -288,6 +288,8 @@ public:
|
||||
*/
|
||||
json_node* next_child(void);
|
||||
|
||||
const char* operator[] (const char* tag);
|
||||
|
||||
/**
|
||||
* 返回该 json 节点在整个 json 树中的深度
|
||||
* @return {int}
|
||||
@ -472,6 +474,22 @@ public:
|
||||
const std::vector<json_node*>&
|
||||
getElementsByTags(const char* tags) const;
|
||||
|
||||
/**
|
||||
* 从 json 对象中获得所有的与给定多级标签名相同的 json 节点的集合
|
||||
* @param tags {const char*} 多级标签名,由 '/' 分隔各级标签名,
|
||||
* 如针对 json 数据:
|
||||
* { 'root': [
|
||||
* 'first': { 'second': { 'third': 'test1' } },
|
||||
* 'first': { 'second': { 'third': 'test2' } },
|
||||
* 'first': { 'second': { 'third': 'test3' } }
|
||||
* ]
|
||||
* }
|
||||
* 可以通过多级标签名:root/first/second/third 一次性查出所有符合
|
||||
* 条件的节点
|
||||
* @return {json_node*} 返回 NULL 表示不存在
|
||||
*/
|
||||
json_node* getFirstElementByTags(const char* tags) const;
|
||||
|
||||
/**
|
||||
* 取得 acl 库中的 ACL_JSON 对象
|
||||
* @return {ACL_JSON*} 该值不可能为空,注意用户可以修改该对象的值,
|
||||
|
3
lib_acl_cpp/samples/json/json13/Makefile
Normal file
3
lib_acl_cpp/samples/json/json13/Makefile
Normal file
@ -0,0 +1,3 @@
|
||||
base_path = ../../..
|
||||
PROG = json
|
||||
include ../../Makefile.in
|
73
lib_acl_cpp/samples/json/json13/json.cpp
Normal file
73
lib_acl_cpp/samples/json/json13/json.cpp
Normal file
@ -0,0 +1,73 @@
|
||||
#include "stdafx.h"
|
||||
/**
|
||||
* 测试json解析器对于制表符解析问题,\t \n等
|
||||
*/
|
||||
|
||||
int main(void)
|
||||
{
|
||||
const char* s = "{ 'cmd': 'GET',\r\n"
|
||||
"'data': { 'count': 2, iptables: [\r\n"
|
||||
" {'test1': '192.168.1.1'},\r\n"
|
||||
" {'test2': '192.168.1.2'},\r\n"
|
||||
" {'test3': '192.168.1.3'},\r\n"
|
||||
" {'test4': '192.168.1.4'},\r\n"
|
||||
" {'test5': '192.168.1.5'},\r\n"
|
||||
" {'test6': '192.168.1.6'},\r\n"
|
||||
" {'test7': 192 },\r\n"
|
||||
" {'test8': true}\r\n"
|
||||
"]}}";
|
||||
|
||||
|
||||
acl::json json(s);
|
||||
const char* tags = "data/iptables";
|
||||
|
||||
acl::json_node* node = json.getFirstElementByTags(tags);
|
||||
if (node == NULL)
|
||||
{
|
||||
printf("no tags: %s\r\n", tags);
|
||||
return 0;
|
||||
}
|
||||
|
||||
printf("tag: %s, type: %s\r\n", node->tag_name(), node->get_type());
|
||||
|
||||
acl::json_node* array = node->get_obj();
|
||||
if (array == NULL)
|
||||
{
|
||||
printf("get_obj null\r\n");
|
||||
return 0;
|
||||
}
|
||||
if (array->is_array() == false)
|
||||
{
|
||||
printf("not array: %s\r\n", array->to_string().c_str());
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
printf("Array: %s\r\n", array->to_string().c_str());
|
||||
|
||||
printf("-------------------------------------------------------\r\n");
|
||||
|
||||
acl::json_node* child = array->first_child();
|
||||
while (child)
|
||||
{
|
||||
printf("type: %s->%s\r\n", child->get_type(),
|
||||
child->to_string().c_str());
|
||||
|
||||
const char* ptr = (*child)["test1"];
|
||||
if (ptr)
|
||||
printf(">>> found, test1: %s\r\n", ptr);
|
||||
|
||||
acl::json_node* iter = child->first_child();
|
||||
while (iter)
|
||||
{
|
||||
printf("type: %s, string: %s, tag: %s, txt: %s\r\n",
|
||||
iter->get_type(), iter->to_string().c_str(),
|
||||
iter->tag_name(), iter->get_text());
|
||||
|
||||
iter = child->next_child();
|
||||
}
|
||||
|
||||
child = array->next_child();
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
8
lib_acl_cpp/samples/json/json13/stdafx.cpp
Normal file
8
lib_acl_cpp/samples/json/json13/stdafx.cpp
Normal file
@ -0,0 +1,8 @@
|
||||
// stdafx.cpp : 只包括标准包含文件的源文件
|
||||
// json.pch 将成为预编译头
|
||||
// stdafx.obj 将包含预编译类型信息
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
// TODO: 在 STDAFX.H 中
|
||||
//引用任何所需的附加头文件,而不是在此文件中引用
|
41
lib_acl_cpp/samples/json/json13/stdafx.h
Normal file
41
lib_acl_cpp/samples/json/json13/stdafx.h
Normal file
@ -0,0 +1,41 @@
|
||||
// stdafx.h : 标准系统包含文件的包含文件,
|
||||
// 或是常用但不常更改的项目特定的包含文件
|
||||
//
|
||||
|
||||
#pragma once
|
||||
|
||||
|
||||
//#include <iostream>
|
||||
//#include <tchar.h>
|
||||
|
||||
// TODO: 在此处引用程序要求的附加头文件
|
||||
|
||||
#include "acl_cpp/lib_acl.hpp"
|
||||
#include "lib_acl.h"
|
||||
|
||||
#ifdef WIN32
|
||||
#include <io.h>
|
||||
#define snprintf _snprintf
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef DEBUG
|
||||
|
||||
// 以下宏定义用来帮助检查变参中的参数类型是否合法
|
||||
|
||||
#undef logger
|
||||
#define logger printf
|
||||
#undef logger_error
|
||||
#define logger_error printf
|
||||
#undef logger_warn
|
||||
#define logger_warn printf
|
||||
#undef logger_fatal
|
||||
#define logger_fatal printf
|
||||
#undef logger_panic
|
||||
#define logger_panic printf
|
||||
|
||||
extern void __attribute__((format(printf,3,4))) \
|
||||
dummy_debug(int, int, const char*, ...);
|
||||
#undef logger_debug
|
||||
#define logger_debug dummy_debug
|
||||
#endif
|
3
lib_acl_cpp/samples/json/json13/valgrind.sh
Normal file
3
lib_acl_cpp/samples/json/json13/valgrind.sh
Normal file
@ -0,0 +1,3 @@
|
||||
#!/bin/sh
|
||||
|
||||
valgrind --tool=memcheck --leak-check=yes -v ./json
|
87
lib_acl_cpp/samples/mime/mime/1.eml
Normal file
87
lib_acl_cpp/samples/mime/mime/1.eml
Normal file
@ -0,0 +1,87 @@
|
||||
Received: by A8-08.weibangong.com (Postfix)
|
||||
id 7D6035013BA2D9; Thu, 10 Mar 2016 13:37:37 +0800 (CST)
|
||||
Date: Thu, 10 Mar 2016 13:37:37 +0800 (CST)
|
||||
From: MAILER-DAEMON@weibangong.com (Mail Delivery System)
|
||||
Subject: Undelivered Mail Returned to Sender
|
||||
To: jiangxianzeng@test.weibangong.me
|
||||
Auto-Submitted: auto-replied
|
||||
MIME-Version: 1.0
|
||||
Content-Type: multipart/report; report-type=delivery-status;
|
||||
boundary="6A6485013BA2D7.1457588257/A8-08.weibangong.com"
|
||||
Message-Id: <20160310053737.7D6035013BA2D9@A8-08.weibangong.com>
|
||||
|
||||
This is a MIME-encapsulated message.
|
||||
|
||||
--6A6485013BA2D7.1457588257/A8-08.weibangong.com
|
||||
Content-Description: Notification
|
||||
Content-Type: text/plain; charset=us-ascii
|
||||
|
||||
This is the mail system at host A8-08.weibangong.com.
|
||||
|
||||
I'm sorry to have to inform you that your message could not
|
||||
be delivered to one or more recipients. It's attached below.
|
||||
|
||||
For further assistance, please send mail to postmaster.
|
||||
|
||||
If you do so, please include this problem report. You can
|
||||
delete your own text from the attached returned message.
|
||||
|
||||
The mail system
|
||||
|
||||
<notification+kjdkwwd-pk5d@facebookmail.com>: Host or domain name not found.
|
||||
Name service error for name=facebookmail.com type=A: Host found but no data
|
||||
record of requested type
|
||||
|
||||
--6A6485013BA2D7.1457588257/A8-08.weibangong.com
|
||||
Content-Description: Delivery report
|
||||
Content-Type: message/delivery-status
|
||||
|
||||
Reporting-MTA: dns; A8-08.weibangong.com
|
||||
X-Postfix-Queue-ID: 6A6485013BA2D7
|
||||
X-Postfix-Sender: rfc822; jiangxianzeng@test.weibangong.me
|
||||
Arrival-Date: Thu, 10 Mar 2016 13:37:37 +0800 (CST)
|
||||
|
||||
Final-Recipient: rfc822; notification+kjdkwwd-pk5d@facebookmail.com
|
||||
Original-Recipient: rfc822;notification+kjdkwwd-pk5d@facebookmail.com
|
||||
Action: failed
|
||||
Status: 5.4.4
|
||||
Diagnostic-Code: X-Postfix; Host or domain name not found. Name service error
|
||||
for name=facebookmail.com type=A: Host found but no data record of
|
||||
requested type
|
||||
|
||||
--6A6485013BA2D7.1457588257/A8-08.weibangong.com
|
||||
Content-Description: Undelivered Message
|
||||
Content-Type: message/rfc822
|
||||
|
||||
Return-Path: <jiangxianzeng@test.weibangong.me>
|
||||
Received: from A8-08.weibangong.com (localhost [127.0.0.1])
|
||||
by A8-08.weibangong.com (Postfix) with ESMTP id 6A6485013BA2D7
|
||||
for <notification+kjdkwwd-pk5d@facebookmail.com>; Thu, 10 Mar 2016 13:37:37 +0800 (CST)
|
||||
X-KSVirus-check:0
|
||||
Received: from A8-08.weibangong.com (unknown [127.0.0.1])
|
||||
by A8-08.weibangong.com (postfix) with ESMTP id 126905GZRSZO;
|
||||
Thu, 10 Mar 2016 13:37:37 +0800 (CST)
|
||||
Received: from localhost (localhost [127.0.0.1])
|
||||
by A8-08.weibangong.com (Postfix) with ESMTPA id 59C329007C2A63
|
||||
for <notification+kjdkwwd-pk5d@facebookmail.com>; Thu, 10 Mar 2016 13:37:37 +0800 (CST)
|
||||
X-RL-SENDER:jiangxianzeng@test.weibangong.me
|
||||
X-SENDER-IP:103.235.226.67
|
||||
X-LOGIN-NAME:wmsendmail@weibangong.com
|
||||
X-SENDER:jiangxianzeng@test.weibangong.me
|
||||
Received: from localhost (unknown [103.235.226.67])
|
||||
by A8-08.weibangong.com (postfix) with ESMTP id 1268919VPK3C;
|
||||
Thu, 10 Mar 2016 13:37:37 +0800 (CST)
|
||||
From: <jiangxianzeng@test.weibangong.me>
|
||||
To: "=?UTF-8?B?RmFjZWJvb2s=?=" <notification+kjdkwwd-pk5d@facebookmail.com>
|
||||
Subject: =?UTF-8?B?6Ieq5Yqo5Zue5aSNOuS9oOWcqCBGYWNlYm9vayDkuIrnmoTmnIvlj4vmr5Tmg7PosaHkuK3opoHlpJo=?=
|
||||
Date: Thu, 10 Mar 2016 13:37:37 +0800 (CST)
|
||||
MIME-Version: 1.0
|
||||
Message-ID: <126861.140003952387840.1457588257.acl@localhost>
|
||||
Content-Type: text/html;
|
||||
charset="utf-8"
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
|
||||
=E9=98=BF=E6=96=AF=E9=A1=BF=E5=8F=91=E6=B0=B4=E7=94=B5=E8=B4=B9
|
||||
|
||||
--6A6485013BA2D7.1457588257/A8-08.weibangong.com--
|
||||
|
946
lib_acl_cpp/samples/mime/mime/2.eml
Normal file
946
lib_acl_cpp/samples/mime/mime/2.eml
Normal file
@ -0,0 +1,946 @@
|
||||
Received: from A8-08.localdomain (localhost [127.0.0.1])
|
||||
by A8-08.weibangong.com (Postfix) with ESMTP id 4A60750137B1D7
|
||||
for <jiangxianzeng@test.weibangong.me>; Thu, 10 Mar 2016 05:44:22 +0800 (CST)
|
||||
Received: from A8-08.localdomain (unknown [127.0.0.1])
|
||||
by A8-08.localdomain (postfix) with ESMTP id 110147OQEHJZ;
|
||||
Thu, 10 Mar 2016 05:44:22 +0800 (CST)
|
||||
Received: from o11.delivery.customeriomail.com (localhost [127.0.0.1])
|
||||
by A8-08.localdomain (Postfix) with ESMTP id 970862084D8F60
|
||||
for <jiangxianzeng@test.weibangong.me>; Thu, 10 Mar 2016 05:44:20 +0800 (CST)
|
||||
X-RL-SENDER:bounces+2008364-7f89-jiangxianzeng=test.weibangong.me@delivery.customeriomail.com
|
||||
X-SENDER-IP:167.89.32.158
|
||||
X-LOGIN-NAME:
|
||||
X-SENDER:bounces+2008364-7f89-jiangxianzeng=test.weibangong.me@delivery.customeriomail.com
|
||||
Received: from o11.delivery.customeriomail.com (unknown [167.89.32.158])
|
||||
by A8-08.localdomain (postfix) with ESMTP id 11012463GDWO;
|
||||
Thu, 10 Mar 2016 05:44:22 +0800 (CST)
|
||||
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=trello.com;
|
||||
h=from:to:subject:mime-version:content-type:content-transfer-encoding:list-unsubscribe;
|
||||
s=smtpapi; bh=ZHamVuPswoj7o8DUqYXhQURTvpE=; b=aqRFginyy+CQnCEmYz
|
||||
CGTLwk7eggNBmMbbr7E4X4jgn8A3lw4NUaPb6X6ynkL4bkk5mKxje//Q/NHfGvs/
|
||||
96UJ/Dec/HzpMftY6Y34rwatPXFW9tfOigvGNhPOFn23LmACGobbzKf7ur9aQbIs
|
||||
y80W6JevwHBVj5mh5geleobhQ=
|
||||
Received: by filter0884p1mdw1.sendgrid.net with SMTP id filter0884p1mdw1.11841.56E098CA34
|
||||
2016-03-09 21:42:34.604339435 +0000 UTC
|
||||
Received: from delivery.customeriomail.com (ovh87.cio.host [192.99.200.192])
|
||||
by ismtpd0003p1iad1.sendgrid.net (SG) with ESMTP id IHUh-yxLSYySmtlCPySm-w
|
||||
for <jiangxianzeng@test.weibangong.me>; Wed, 09 Mar 2016 21:42:34.502 +0000 (UTC)
|
||||
Date: Wed, 09 Mar 2016 21:42:33 +0000
|
||||
From: Stella from Trello <taco@trello.com>
|
||||
To: jiangxianzeng@test.weibangong.me
|
||||
Message-ID: <56e098c9d22f7_5269116325c1754243d8@ns500965.ip-192-99-200.net.mail>
|
||||
Subject: Introducing Trello's Chrome Extension
|
||||
Mime-Version: 1.0
|
||||
Content-Type: multipart/alternative;
|
||||
boundary="--==_mimepart_56e098c9cfc36_5269116325c17542408c";
|
||||
charset=UTF-8
|
||||
Content-Transfer-Encoding: 7bit
|
||||
List-Unsubscribe: <mailto:NDEzNTI6FwFX2wJkAAJzABcm75caAVJqn1SGFVYYVuBAkAFtOjI5NzExNwA=@unsubscribe.customer.io>,
|
||||
<http://track.customer.io/unsubscribe/NDEzNTI6FwFX2wJkAAJzABcm75caAVJqn1SGFVYYVuBAkAFtOjI5NzExNwA=>
|
||||
X-SG-EID: XgixRH9e8+k13ajn1zHda3nCbfmgZzqapmEzS+krPzBqs2Me3oaBOEywQ737POshGyO4z54GVS7nnP
|
||||
+qqJjhtccx4yHf5dF2gULl+5lSBZBgpcnfmf/RRgNTkEbuiAVU7daKjsLuTuj/7TnqVmQdaf1tVFae
|
||||
8va1Xhly5Y8JIRNx6cOOLjAAp0p8fLhhsVq4CJCfAs3u+KrtWvS4rCzf66g3yFyfg5/dWeySACspnp
|
||||
o=
|
||||
X-SG-ID: YDTqBOjidbCUo/ar1oAtZiP/qF3xTpCk7nO8VYs20xb9UCOXZErqNvw4/64QDOnwVF+RRG9YMTArsd
|
||||
IbuOxCCRr28L9Ytvu/qdwFBGwYvOAN/T2s7K/BmRAi0JVdHyZu
|
||||
|
||||
|
||||
----==_mimepart_56e098c9cfc36_5269116325c17542408c
|
||||
Date: Wed, 09 Mar 2016 21:42:33 +0000
|
||||
Mime-Version: 1.0
|
||||
Content-Type: text/plain;
|
||||
charset=UTF-8
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
Content-ID: <56e098c9d0c82_5269116325c175424171@ns500965.ip-192-99-200.net.mail>
|
||||
|
||||
Check out
|
||||
Trello's new Chrome extension, board best practices, plus
|
||||
management tips.
|
||||
|
||||
View this
|
||||
email in your browser ( http://track.customer.io/deliveries/NDEzNTI6FwFX2wJ=
|
||||
kAAJzABcm75caAVJqn1SGFVYYVuBAkAFtOjI5NzExNwA=3D ).
|
||||
|
||||
( https://trello.com?utm_source=3Dnewsletter&utm_medium=3Demail&utm_campaig=
|
||||
n=3DFebNewsletter )
|
||||
|
||||
**********************
|
||||
Better Building Blocks
|
||||
**********************
|
||||
|
||||
Structural integrity
|
||||
is the key to better tools, management, and results.
|
||||
|
||||
Build Better Boards
|
||||
-------------------
|
||||
|
||||
Are your boards set
|
||||
up effectively? Check out some Trello best practices.
|
||||
|
||||
Find Out
|
||||
How ( http://blog.trello.com/trello-board-best-practices/?utm_source=3Dnews=
|
||||
letter&utm_medium=3Demail&utm_campaign=3DMarNewsletter )
|
||||
|
||||
Management Must-Haves
|
||||
---------------------
|
||||
|
||||
Learned wisdom on
|
||||
the transition from "maker" to "manager."
|
||||
|
||||
Learn The
|
||||
Ropes ( http://blog.trello.com/tips-for-managers-to-help-lead-more-effectiv=
|
||||
ely/?utm_source=3Dnewsletter&utm_medium=3Demail&utm_campaign=3DMarNewslette=
|
||||
r )
|
||||
|
||||
Avoid Prioritization Pitfalls
|
||||
-----------------------------
|
||||
|
||||
A proven strategy to
|
||||
make your team more productive.
|
||||
|
||||
Stay On
|
||||
Task ( http://blog.trello.com/manage-teams-with-5-things/?utm_source=3Dnews=
|
||||
letter&utm_medium=3Demail&utm_campaign=3DMarNewsletter )
|
||||
|
||||
The Transparency Turnpike
|
||||
-------------------------
|
||||
|
||||
Why public roadmaps
|
||||
help you take an engaging journey with your users.
|
||||
|
||||
Hit The
|
||||
Road ( http://blog.trello.com/tips-for-making-a-public-roadmap/?utm_source=
|
||||
=3Dnewsletter&utm_medium=3Demail&utm_campaign=3DMarNewsletter )
|
||||
|
||||
Build In Your Browser
|
||||
---------------------
|
||||
|
||||
Trello's brand new
|
||||
Chrome extension means more success in less steps.
|
||||
|
||||
Check It
|
||||
Out ( http://blog.trello.com/trello-chrome-extension/?utm_source=3Dnewslett=
|
||||
er&utm_medium=3Demail&utm_campaign=3DMarNewsletter )
|
||||
|
||||
Connect with us:
|
||||
|
||||
( https://www.facebook.com/trelloapp )
|
||||
( https://twitter.com/trello )
|
||||
( https://www.pinterest.com/trelloapp/ )
|
||||
( https://www.linkedin.com/company/trello )
|
||||
( http://blog.trello.com?utm_source=3Dnewsletter&utm_medium=3Demail&utm_cam=
|
||||
paign=3DMarNewsletter )
|
||||
|
||||
Copyright =C2=A9 2016 Trello Inc., All rights reserved.
|
||||
|
||||
Unsubscribe ( http://track.customer.io/unsubscribe/NDEzNTI6FwFX2wJkAAJzABcm=
|
||||
75caAVJqn1SGFVYYVuBAkAFtOjI5NzExNwA=3D ) | view in browser ( http://track.c=
|
||||
ustomer.io/deliveries/NDEzNTI6FwFX2wJkAAJzABcm75caAVJqn1SGFVYYVuBAkAFtOjI5N=
|
||||
zExNwA=3D )
|
||||
|
||||
----==_mimepart_56e098c9cfc36_5269116325c17542408c
|
||||
Date: Wed, 09 Mar 2016 21:42:33 +0000
|
||||
Mime-Version: 1.0
|
||||
Content-Type: text/html;
|
||||
charset=UTF-8
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
Content-ID: <56e098c9d1dbf_5269116325c175424212@ns500965.ip-192-99-200.net.mail>
|
||||
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.=
|
||||
w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns=3D"http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3DU=
|
||||
TF-8">
|
||||
<meta name=3D"viewport" content=3D"width=3Ddevice-width">
|
||||
<title>#ReadySetGoal</title>
|
||||
|
||||
<style type=3D"text/css">
|
||||
#outlook a{
|
||||
padding:0;
|
||||
}
|
||||
.ReadMsgBody{
|
||||
width:100%;
|
||||
}
|
||||
.ExternalClass{
|
||||
width:100%;
|
||||
}
|
||||
.ExternalClass,.ExternalClass p,.ExternalClass span,.ExternalClass =
|
||||
font,.ExternalClass td,.ExternalClass div{
|
||||
line-height:100%;
|
||||
}
|
||||
body,table,td,p,a,li,blockquote{
|
||||
-webkit-text-size-adjust:100%;
|
||||
-ms-text-size-adjust:100%;
|
||||
}
|
||||
table,td{
|
||||
mso-table-lspace:0pt;
|
||||
mso-table-rspace:0pt;
|
||||
}
|
||||
img{
|
||||
-ms-interpolation-mode:bicubic;
|
||||
}
|
||||
body{
|
||||
margin:0;
|
||||
padding:0;
|
||||
background:#EEEEEE;
|
||||
}
|
||||
img{
|
||||
border:0;
|
||||
height:auto;
|
||||
line-height:100%;
|
||||
outline:none;
|
||||
text-decoration:none;
|
||||
max-width: 100%;
|
||||
}
|
||||
#content-body img {
|
||||
max-width: 500px!important;
|
||||
}
|
||||
table{
|
||||
border-collapse:collapse !important;
|
||||
}
|
||||
body,#bodyTable{
|
||||
height:100% !important;
|
||||
margin:0;
|
||||
padding:0;
|
||||
width:100% !important;
|
||||
}
|
||||
#bodyTable{
|
||||
font-family:Helvetica Neue, Helvetica, Arial, sans-serif;
|
||||
min-height:100%;
|
||||
background:#eeeeee;
|
||||
color:#444444;
|
||||
}
|
||||
.button.clear:hover{
|
||||
background:rgba(255,255,255,0.3)!important;
|
||||
}
|
||||
img{
|
||||
border:0!important;
|
||||
}
|
||||
a{
|
||||
text-decoration:none;
|
||||
}
|
||||
a.blog{
|
||||
text-decoration:underline!important;
|
||||
}
|
||||
h1{
|
||||
/*@editable*/font-family:Helvetica;
|
||||
/*@editable*/font-size:36px;
|
||||
/*@editable*/font-style:normal;
|
||||
/*@editable*/font-weight:bold;
|
||||
/*@editable*/text-align:center;
|
||||
margin:40px auto 20px;
|
||||
}
|
||||
h2{
|
||||
/*@editable*/font-size:28px;
|
||||
/*@editable*/font-style:normal;
|
||||
/*@editable*/font-weight:bold;
|
||||
margin:0px auto 25px;
|
||||
color:#FFFFFF!important;
|
||||
}
|
||||
h3{
|
||||
font-size:24px;
|
||||
font-weight:bold;
|
||||
margin: 30px 50px 0 0;
|
||||
/*@editable*/letter-spacing:normal;
|
||||
/*@editable*/text-align:left;
|
||||
}
|
||||
a h3{
|
||||
color:#444444!important;
|
||||
text-decoration:none!important;
|
||||
}
|
||||
#header p{
|
||||
width:400px;
|
||||
font-size:22px;
|
||||
line-height:28px;
|
||||
margin:5px auto 0;
|
||||
}
|
||||
.list p{
|
||||
padding:15px 40px 15px 20px;
|
||||
margin:0;
|
||||
}
|
||||
.list a{
|
||||
color:#0079bf;
|
||||
text-decoration:underline;
|
||||
}
|
||||
.titleLink{
|
||||
text-decoration:none!important;
|
||||
}
|
||||
.preheaderContent{
|
||||
/*@editable*/color:#808080;
|
||||
/*@editable*/font-size:10px;
|
||||
/*@editable*/line-height:125%;
|
||||
}
|
||||
.preheaderContent a:link,.preheaderContent a:visited,.preheaderCont=
|
||||
ent a .yshortcuts{
|
||||
/*@editable*/color:#606060;
|
||||
/*@editable*/font-weight:normal;
|
||||
/*@editable*/text-decoration:underline;
|
||||
}
|
||||
#content-block {
|
||||
text-align: left;
|
||||
padding:10px 40px;
|
||||
}
|
||||
p{
|
||||
font-size:22px;
|
||||
line-height:28px;
|
||||
margin: 10px 50px 10px auto;
|
||||
}
|
||||
#header img{
|
||||
width:600px;
|
||||
}
|
||||
#socialIconWrap img{
|
||||
line-height:35px!important;
|
||||
padding:0px 5px;
|
||||
}
|
||||
.footerContent div{
|
||||
/*@editable*/color:#707070;
|
||||
/*@editable*/font-family:Arial;
|
||||
/*@editable*/font-size:12px;
|
||||
/*@editable*/line-height:125%;
|
||||
/*@editable*/text-align:center;
|
||||
max-width:100%!important;
|
||||
}
|
||||
.footerContent div a:link,.footerContent div a:visited{
|
||||
/*@editable*/color:#336699;
|
||||
/*@editable*/font-weight:normal;
|
||||
/*@editable*/text-decoration:underline;
|
||||
}
|
||||
.footerContent img{
|
||||
display:inline;
|
||||
}
|
||||
#socialLinks img{
|
||||
margin:10px 2px;
|
||||
}
|
||||
#utility{
|
||||
/*@editable*/border-top:1px solid #dddddd;
|
||||
}
|
||||
#utility div{
|
||||
/*@editable*/text-align:center;
|
||||
}
|
||||
#monkeyRewards img{
|
||||
max-width:160px;
|
||||
}
|
||||
#emailFooter{
|
||||
max-width:100%!important;
|
||||
}
|
||||
#footerTwitter a,#footerFacebook a{
|
||||
text-decoration:none!important;
|
||||
color:#ffffff!important;
|
||||
font-size:14px;
|
||||
}
|
||||
#emailButton{
|
||||
border-radius:6px;
|
||||
background:#70B500!important;
|
||||
margin:0px auto 60px;
|
||||
box-shadow:0px 4px 0px #578C00;
|
||||
}
|
||||
#socialLinks a{
|
||||
width:40px;
|
||||
}
|
||||
#socialLinks #blogLink{
|
||||
width:80px!important;
|
||||
}
|
||||
#logoWrap{
|
||||
background:url('https://gallery.mailchimp.com/5cb712992a906406c=
|
||||
5eae28a7/images/d7a697bc-1cb3-4334-a1c4-2da3f78473a6.jpg') center center / =
|
||||
600px 50px no-repeat!important;
|
||||
}
|
||||
.sectionWrap{
|
||||
text-align:center;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body style=3D"-webkit-text-size-adjust: 100%; -ms-text-size-adjust: 10=
|
||||
0%; height: 100% !important; width: 100% !important; background: #EEEEEE; m=
|
||||
argin: 0; padding: 0;" bgcolor=3D"#EEEEEE">
|
||||
<img alt=3D"" src=3D"https://d3k1505f61nl3q.cloudfront.net/i?&e=3Dp=
|
||||
v&page=3DReadySetGoal&aid=3Demail&p=3Dweb&uid=3Dhttp://trac=
|
||||
k.customer.io/deliveries/NDEzNTI6FwFX2wJkAAJzABcm75caAVJqn1SGFVYYVuBAkAFtOj=
|
||||
I5NzExNwA=3D&tv=3Dno-js-0.1.0" style=3D"-ms-interpolation-mode: bicubic=
|
||||
; height: auto; line-height: 100%; outline: none; text-decoration: none; ma=
|
||||
x-width: 100%; border: 0;">
|
||||
|
||||
<table border=3D"0" cellpadding=3D"0" cellspacing=3D"0" height=3D"1=
|
||||
00%" width=3D"100%" id=3D"bodyTable" style=3D"-webkit-text-size-adjust: 100=
|
||||
%; -ms-text-size-adjust: 100%; mso-table-lspace: 0pt; mso-table-rspace: 0pt=
|
||||
; border-collapse: collapse !important; height: 100% !important; width: 100=
|
||||
% !important; font-family: Helvetica Neue, Helvetica, Arial, sans-serif; mi=
|
||||
n-height: 100%; color: #444444; background: #eeeeee; margin: 0; padding: 0;=
|
||||
" bgcolor=3D"#eeeeee">
|
||||
<tr>
|
||||
<td align=3D"center" valign=3D"top" style=3D"-webkit-text-s=
|
||||
ize-adjust: 100%; -ms-text-size-adjust: 100%; mso-table-lspace: 0pt; mso-ta=
|
||||
ble-rspace: 0pt;">
|
||||
<table align=3D"center" border=3D"0" cellspacing=3D"0" =
|
||||
width=3D"600" id=3D"emailContainer" style=3D"width: 600px !important; min-w=
|
||||
idth: 600px !important; -webkit-text-size-adjust: 100%; -ms-text-size-adjus=
|
||||
t: 100%; mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: col=
|
||||
lapse !important;">
|
||||
<tr>
|
||||
<td align=3D"center" valign=3D"top" style=3D"-w=
|
||||
ebkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; mso-table-lspace:=
|
||||
0pt; mso-table-rspace: 0pt;">
|
||||
<!-- BEGIN PREHEADER // -->
|
||||
<table border=3D"0" cellpadding=3D"0" cells=
|
||||
pacing=3D"0" width=3D"100%" id=3D"templatePreheader" style=3D"-webkit-text-=
|
||||
size-adjust: 100%; -ms-text-size-adjust: 100%; mso-table-lspace: 0pt; mso-t=
|
||||
able-rspace: 0pt; border-collapse: collapse !important; margin: 15px 0 10px=
|
||||
;">
|
||||
<tr>
|
||||
<td style=3D"-webkit-text-size-adju=
|
||||
st: 100%; -ms-text-size-adjust: 100%; mso-table-lspace: 0pt; mso-table-rspa=
|
||||
ce: 0pt;">
|
||||
<table align=3D"left" border=3D=
|
||||
"0" cellspacing=3D"0" width=3D"50%" style=3D"-webkit-text-size-adjust: 100%=
|
||||
; -ms-text-size-adjust: 100%; mso-table-lspace: 0pt; mso-table-rspace: 0pt;=
|
||||
border-collapse: collapse !important;">
|
||||
<tr>
|
||||
<td valign=3D"top" clas=
|
||||
s=3D"preheaderContent" align=3D"left" style=3D"text-align: left !important;=
|
||||
-webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; mso-table-lspa=
|
||||
ce: 0pt; mso-table-rspace: 0pt; color: #808080; font-size: 10px; line-heigh=
|
||||
t: 125%;">
|
||||
Check out Trello's n=
|
||||
ew Chrome extension, board best practices, plus management tips.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table align=3D"left" border=3D=
|
||||
"0" cellspacing=3D"0" width=3D"50%" style=3D"-webkit-text-size-adjust: 100%=
|
||||
; -ms-text-size-adjust: 100%; mso-table-lspace: 0pt; mso-table-rspace: 0pt;=
|
||||
border-collapse: collapse !important;">
|
||||
<tr>
|
||||
<td valign=3D"top" alig=
|
||||
n=3D"right" class=3D"preheaderContent" mc:edit=3D"preheader_content01" styl=
|
||||
e=3D"text-align: right !important; -webkit-text-size-adjust: 100%; -ms-text=
|
||||
-size-adjust: 100%; mso-table-lspace: 0pt; mso-table-rspace: 0pt; color: #8=
|
||||
08080; font-size: 10px; line-height: 125%;">
|
||||
<a href=3D"http://e=
|
||||
m.trello.com/deliveries/NDEzNTI6FwFX2wJkAAJzABcm75caAVJqn1SGFVYYVuBAkAFtOjI=
|
||||
5NzExNwA=3D" style=3D"-webkit-text-size-adjust: 100%; -ms-text-size-adjust:=
|
||||
100%; text-decoration: underline; color: #606060; font-weight: normal;">Vi=
|
||||
ew this email in your browser</a>.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<!-- // END PREHEADER -->
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td id=3D"logoWrap" align=3D"bottom" style=3D"=
|
||||
text-align: center !important; background-image: url('https://gallery.mailc=
|
||||
himp.com/5cb712992a906406c5eae28a7/images/d7a697bc-1cb3-4334-a1c4-2da3f7847=
|
||||
3a6.jpg') !important; background-repeat: no-repeat !important; background-s=
|
||||
ize: 600px 50px; background-position: center center !important; -webkit-tex=
|
||||
t-size-adjust: 100%; -ms-text-size-adjust: 100%; mso-table-lspace: 0pt; mso=
|
||||
-table-rspace: 0pt;">
|
||||
<a href=3D"http://em.trello.com/e/c/eyJlbWFp=
|
||||
bF9pZCI6Ik5ERXpOVEk2RndGWDJ3SmtBQUp6QUJjbTc1Y2FBVkpxbjFTR0ZWWVlWdUJBa0FGdE9=
|
||||
qSTVOekV4TndBPSIsInBvc2l0aW9uIjowLCJocmVmIjoiaHR0cHM6Ly90cmVsbG8uY29tP3V0bV=
|
||||
9zb3VyY2U9bmV3c2xldHRlciZ1dG1fbWVkaXVtPWVtYWlsJnV0bV9jYW1wYWlnbj1GZWJOZXdzb=
|
||||
GV0dGVyIiwibGlua19pZCI6MTExMjI3MzJ9/f76cb781f16105094820efade378556e2e661bc=
|
||||
1b35ef5b9afbedd6131bdf9ba" style=3D"-webkit-text-size-adjust: 100%; -ms-tex=
|
||||
t-size-adjust: 100%; text-decoration: none;"><img id=3D"logo" src=3D"https:=
|
||||
//gallery.mailchimp.com/5cb712992a906406c5eae28a7/images/ca9278a0-af3c-4fd1=
|
||||
-b3a4-4bf53136a180.jpg" width=3D"172" height=3D"50" style=3D"-ms-interpolat=
|
||||
ion-mode: bicubic; height: auto; line-height: 100%; outline: none; text-dec=
|
||||
oration: none; max-width: 100%; margin: 10px auto 20px; border: 0;"></a>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- ////////////////////////////
|
||||
/////// BEGIN CONTENT ///////
|
||||
/////////////////////////// -->
|
||||
|
||||
|
||||
<tr>
|
||||
<td align=3D"center" valign=3D"top" style=3D"-w=
|
||||
ebkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; mso-table-lspace:=
|
||||
0pt; mso-table-rspace: 0pt;">
|
||||
<table class=3D"sectionWrap" border=3D"0" c=
|
||||
ellpadding=3D"0" cellspacing=3D"0" width=3D"600" style=3D"overflow: hidden;=
|
||||
border-radius: 4px; box-shadow: 0px 3px 0px #DDDDDD; max-width: 600px !imp=
|
||||
ortant; min-width: 600px !important; -webkit-text-size-adjust: 100%; -ms-te=
|
||||
xt-size-adjust: 100%; mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-=
|
||||
collapse: collapse !important; text-align: center; background: #FFFFFF;" id=
|
||||
=3D"content" bgcolor=3D"#FFFFFF">
|
||||
<tr>
|
||||
<td id=3D"header" valign=3D"top" bgco=
|
||||
lor=3D"#00C2E0" style=3D"max-width: 100% !important; background-size: 600px=
|
||||
300px; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; mso-tab=
|
||||
le-lspace: 0pt; mso-table-rspace: 0pt; background: #00C2E0 no-repeat top ce=
|
||||
nter; padding: 20px 0 0;">
|
||||
|
||||
|
||||
<h1 style=3D"font-family: Helve=
|
||||
tica; font-size: 36px; font-style: normal; font-weight: bold; text-align: c=
|
||||
enter; margin: 40px auto 20px;" align=3D"center"><font color=3D"#ffffff">Be=
|
||||
tter Building Blocks</font></h1>
|
||||
<p style=3D"-webkit-text-size-a=
|
||||
djust: 100%; -ms-text-size-adjust: 100%; width: 400px; font-size: 22px; lin=
|
||||
e-height: 28px; margin: 5px auto 20px;"><font color=3D"#FFFFFF">Structural =
|
||||
integrity is the key to better tools, management, and results. </font></p>
|
||||
|
||||
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<!-- Best Practices -->
|
||||
<tr>
|
||||
<td style=3D"text-align: left; -web=
|
||||
kit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; mso-table-lspace: 0=
|
||||
pt; mso-table-rspace: 0pt;" align=3D"left">
|
||||
<img src=3D"https://gallery.mai=
|
||||
lchimp.com/5cb712992a906406c5eae28a7/images/e1420477-e2b5-421d-8b8f-6a58013=
|
||||
ab0ec.png" align=3D"left" width=3D"150" height=3D"150" style=3D"display: in=
|
||||
line-block; -ms-interpolation-mode: bicubic; height: auto; line-height: 100=
|
||||
%; outline: none; text-decoration: none; max-width: 100%; margin: 40px; bor=
|
||||
der: 0;">
|
||||
<h3 style=3D"font-size: 24px; f=
|
||||
ont-weight: bold; letter-spacing: normal; text-align: left; margin: 30px 50=
|
||||
px 0 0;" align=3D"left"><font color=3D"#4d4d4d">Build Better Boards</font><=
|
||||
/h3>
|
||||
<p style=3D"text-align: left; f=
|
||||
ont-size: 18px; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%;=
|
||||
line-height: 28px; margin: 10px 50px 10px auto;" align=3D"left"><font colo=
|
||||
r=3D"#4d4d4d"> Are your boards set up effectively? Check out some Trello be=
|
||||
st practices. </font></p>
|
||||
<table class=3D"button main" bo=
|
||||
rder=3D"0" cellpadding=3D"14" cellspacing=3D"0" style=3D"display: inline-bl=
|
||||
ock; font-weight: bold; font-size: 24px; text-align: center; cursor: pointe=
|
||||
r; color: #FFFFFF; border-radius: 6px; -webkit-text-size-adjust: 100%; -ms-=
|
||||
text-size-adjust: 100%; mso-table-lspace: 0pt; mso-table-rspace: 0pt; borde=
|
||||
r-collapse: collapse !important; background: #61BD4F; margin: 10px 0 20px;"=
|
||||
align=3D"center" bgcolor=3D"#61BD4F">
|
||||
<tr>
|
||||
<td align=3D"center" vali=
|
||||
gn=3D"middle" class=3D"emailButtonContent" style=3D"-webkit-text-size-adjus=
|
||||
t: 100%; -ms-text-size-adjust: 100%; mso-table-lspace: 0pt; mso-table-rspac=
|
||||
e: 0pt;">
|
||||
<a href=3D"http://em.=
|
||||
trello.com/e/c/eyJlbWFpbF9pZCI6Ik5ERXpOVEk2RndGWDJ3SmtBQUp6QUJjbTc1Y2FBVkpx=
|
||||
bjFTR0ZWWVlWdUJBa0FGdE9qSTVOekV4TndBPSIsInBvc2l0aW9uIjoxLCJocmVmIjoiaHR0cDo=
|
||||
vL2Jsb2cudHJlbGxvLmNvbS90cmVsbG8tYm9hcmQtYmVzdC1wcmFjdGljZXMvP3V0bV9zb3VyY2=
|
||||
U9bmV3c2xldHRlciZ1dG1fbWVkaXVtPWVtYWlsJnV0bV9jYW1wYWlnbj1NYXJOZXdzbGV0dGVyI=
|
||||
iwibGlua19pZCI6MTIwNzU3NTl9/a468f7c6b4a7af3c919705c828dc45c407948206cf240a3=
|
||||
73e02d792dbc24c5b" target=3D"_blank" style=3D"text-decoration: none; -webki=
|
||||
t-text-size-adjust: 100%; -ms-text-size-adjust: 100%; padding: 10px;"><font=
|
||||
color=3D"white">Find Out How</font></a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style=3D"-webkit-text-size-adju=
|
||||
st: 100%; -ms-text-size-adjust: 100%; mso-table-lspace: 0pt; mso-table-rspa=
|
||||
ce: 0pt;">
|
||||
<center><img src=3D"https://gal=
|
||||
lery.mailchimp.com/5cb712992a906406c5eae28a7/images/d1e4be59-347e-461a-afbc=
|
||||
-b5db9457425e.png" width=3D"440" height=3D"19" style=3D"display: block; -ms=
|
||||
-interpolation-mode: bicubic; height: auto; line-height: 100%; outline: non=
|
||||
e; text-decoration: none; max-width: 100%; margin: 10px auto; border: 0;"><=
|
||||
/center>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<!-- Lead More Effectively -->
|
||||
<tr>
|
||||
<td style=3D"text-align: left; -web=
|
||||
kit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; mso-table-lspace: 0=
|
||||
pt; mso-table-rspace: 0pt;" align=3D"left">
|
||||
<img src=3D"https://gallery.mai=
|
||||
lchimp.com/5cb712992a906406c5eae28a7/images/87fc487d-7751-422c-bc53-230e89e=
|
||||
9d9f3.png" align=3D"left" width=3D"150" height=3D"150" style=3D"display: in=
|
||||
line-block; -ms-interpolation-mode: bicubic; height: auto; line-height: 100=
|
||||
%; outline: none; text-decoration: none; max-width: 100%; margin: 40px; bor=
|
||||
der: 0;">
|
||||
<h3 style=3D"font-size: 24px; f=
|
||||
ont-weight: bold; letter-spacing: normal; text-align: left; margin: 30px 50=
|
||||
px 0 0;" align=3D"left"><font color=3D"#4d4d4d">Management Must-Haves</font=
|
||||
></h3>
|
||||
<p style=3D"text-align: left; f=
|
||||
ont-size: 18px; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%;=
|
||||
line-height: 28px; margin: 10px 50px 10px auto;" align=3D"left"><font colo=
|
||||
r=3D"#4d4d4d"> Learned wisdom on the transition from "maker" to "manager."<=
|
||||
/font></p>
|
||||
<table class=3D"button main" bo=
|
||||
rder=3D"0" cellpadding=3D"14" cellspacing=3D"0" style=3D"display: inline-bl=
|
||||
ock; font-weight: bold; font-size: 24px; text-align: center; cursor: pointe=
|
||||
r; color: #FFFFFF; border-radius: 6px; -webkit-text-size-adjust: 100%; -ms-=
|
||||
text-size-adjust: 100%; mso-table-lspace: 0pt; mso-table-rspace: 0pt; borde=
|
||||
r-collapse: collapse !important; background: #61BD4F; margin: 10px 0 20px;"=
|
||||
align=3D"center" bgcolor=3D"#61BD4F">
|
||||
<tr>
|
||||
<td align=3D"center" vali=
|
||||
gn=3D"middle" class=3D"emailButtonContent" style=3D"-webkit-text-size-adjus=
|
||||
t: 100%; -ms-text-size-adjust: 100%; mso-table-lspace: 0pt; mso-table-rspac=
|
||||
e: 0pt;">
|
||||
<a href=3D"http://em.=
|
||||
trello.com/e/c/eyJlbWFpbF9pZCI6Ik5ERXpOVEk2RndGWDJ3SmtBQUp6QUJjbTc1Y2FBVkpx=
|
||||
bjFTR0ZWWVlWdUJBa0FGdE9qSTVOekV4TndBPSIsInBvc2l0aW9uIjoyLCJocmVmIjoiaHR0cDo=
|
||||
vL2Jsb2cudHJlbGxvLmNvbS90aXBzLWZvci1tYW5hZ2Vycy10by1oZWxwLWxlYWQtbW9yZS1lZm=
|
||||
ZlY3RpdmVseS8_dXRtX3NvdXJjZT1uZXdzbGV0dGVyJnV0bV9tZWRpdW09ZW1haWwmdXRtX2Nhb=
|
||||
XBhaWduPU1hck5ld3NsZXR0ZXIiLCJsaW5rX2lkIjoxMjA3NTc2MH0/212e2c8146ad4c06eb02=
|
||||
05964a45244684cbe5b62c0b9f368fcda2d0b3f4299b" target=3D"_blank" style=3D"te=
|
||||
xt-decoration: none; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: =
|
||||
100%; padding: 10px;"><font color=3D"white">Learn The Ropes</font></a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style=3D"-webkit-text-size-adju=
|
||||
st: 100%; -ms-text-size-adjust: 100%; mso-table-lspace: 0pt; mso-table-rspa=
|
||||
ce: 0pt;">
|
||||
<center><img src=3D"https://gal=
|
||||
lery.mailchimp.com/5cb712992a906406c5eae28a7/images/9bca9ea1-0e78-4770-b6c0=
|
||||
-3a012c069f0d.png" width=3D"440" height=3D"19" style=3D"display: block; -ms=
|
||||
-interpolation-mode: bicubic; height: auto; line-height: 100%; outline: non=
|
||||
e; text-decoration: none; max-width: 100%; margin: 10px auto; border: 0;"><=
|
||||
/center>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<!-- Rule of Five -->
|
||||
<td style=3D"text-align: left; -web=
|
||||
kit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; mso-table-lspace: 0=
|
||||
pt; mso-table-rspace: 0pt;" align=3D"left">
|
||||
<img src=3D"https://gallery.mai=
|
||||
lchimp.com/5cb712992a906406c5eae28a7/images/c793bf7e-ea50-403e-bd5d-695e609=
|
||||
b7b51.png" align=3D"left" width=3D"150" height=3D"150" style=3D"display: in=
|
||||
line-block; -ms-interpolation-mode: bicubic; height: auto; line-height: 100=
|
||||
%; outline: none; text-decoration: none; max-width: 100%; margin: 40px; bor=
|
||||
der: 0;">
|
||||
<h3 style=3D"font-size: 24px; f=
|
||||
ont-weight: bold; letter-spacing: normal; text-align: left; margin: 30px 50=
|
||||
px 0 0;" align=3D"left"><font color=3D"#4d4d4d">Avoid Prioritization Pitfal=
|
||||
ls</font></h3>
|
||||
<p style=3D"text-align: left; f=
|
||||
ont-size: 18px; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%;=
|
||||
line-height: 28px; margin: 10px 50px 10px auto;" align=3D"left"><font colo=
|
||||
r=3D"#4d4d4d">A proven strategy to make your team more productive.</font></=
|
||||
p>
|
||||
<table class=3D"button main" bo=
|
||||
rder=3D"0" cellpadding=3D"14" cellspacing=3D"0" style=3D"display: inline-bl=
|
||||
ock; font-weight: bold; font-size: 24px; text-align: center; cursor: pointe=
|
||||
r; color: #FFFFFF; border-radius: 6px; -webkit-text-size-adjust: 100%; -ms-=
|
||||
text-size-adjust: 100%; mso-table-lspace: 0pt; mso-table-rspace: 0pt; borde=
|
||||
r-collapse: collapse !important; background: #61BD4F; margin: 10px 0 20px;"=
|
||||
align=3D"center" bgcolor=3D"#61BD4F">
|
||||
<tr>
|
||||
<td align=3D"center" vali=
|
||||
gn=3D"middle" class=3D"emailButtonContent" style=3D"-webkit-text-size-adjus=
|
||||
t: 100%; -ms-text-size-adjust: 100%; mso-table-lspace: 0pt; mso-table-rspac=
|
||||
e: 0pt;">
|
||||
<a href=3D"http://em.=
|
||||
trello.com/e/c/eyJlbWFpbF9pZCI6Ik5ERXpOVEk2RndGWDJ3SmtBQUp6QUJjbTc1Y2FBVkpx=
|
||||
bjFTR0ZWWVlWdUJBa0FGdE9qSTVOekV4TndBPSIsInBvc2l0aW9uIjozLCJocmVmIjoiaHR0cDo=
|
||||
vL2Jsb2cudHJlbGxvLmNvbS9tYW5hZ2UtdGVhbXMtd2l0aC01LXRoaW5ncy8_dXRtX3NvdXJjZT=
|
||||
1uZXdzbGV0dGVyJnV0bV9tZWRpdW09ZW1haWwmdXRtX2NhbXBhaWduPU1hck5ld3NsZXR0ZXIiL=
|
||||
CJsaW5rX2lkIjoxMjA3NTc2MX0/c00cbf93dd655adf97366433147a8c49c334c581399a2c02=
|
||||
d9ac537960610258" target=3D"_blank" style=3D"text-decoration: none; -webkit=
|
||||
-text-size-adjust: 100%; -ms-text-size-adjust: 100%; padding: 10px;"><font =
|
||||
color=3D"white">Stay On Task</font></a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style=3D"-webkit-text-size-adju=
|
||||
st: 100%; -ms-text-size-adjust: 100%; mso-table-lspace: 0pt; mso-table-rspa=
|
||||
ce: 0pt;">
|
||||
<center><img src=3D"https://gal=
|
||||
lery.mailchimp.com/5cb712992a906406c5eae28a7/images/660a7a06-42da-4a49-9db0=
|
||||
-c2135a480890.png" width=3D"440" height=3D"19" style=3D"display: block; -ms=
|
||||
-interpolation-mode: bicubic; height: auto; line-height: 100%; outline: non=
|
||||
e; text-decoration: none; max-width: 100%; margin: 10px auto; border: 0;"><=
|
||||
/center>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<!-- Public Roadmap -->
|
||||
<td style=3D"text-align: left; -web=
|
||||
kit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; mso-table-lspace: 0=
|
||||
pt; mso-table-rspace: 0pt;" align=3D"left">
|
||||
<img src=3D"https://gallery.mai=
|
||||
lchimp.com/5cb712992a906406c5eae28a7/images/9697b8e4-5f46-405b-b336-b1637b8=
|
||||
a2d9e.png" align=3D"left" width=3D"150" height=3D"150" style=3D"display: in=
|
||||
line-block; -ms-interpolation-mode: bicubic; height: auto; line-height: 100=
|
||||
%; outline: none; text-decoration: none; max-width: 100%; margin: 40px; bor=
|
||||
der: 0;">
|
||||
<h3 style=3D"font-size: 24px; f=
|
||||
ont-weight: bold; letter-spacing: normal; text-align: left; margin: 30px 50=
|
||||
px 0 0;" align=3D"left"><font color=3D"#4d4d4d">The Transparency Turnpike</=
|
||||
font></h3>
|
||||
<p style=3D"text-align: left; f=
|
||||
ont-size: 18px; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%;=
|
||||
line-height: 28px; margin: 10px 50px 10px auto;" align=3D"left"><font colo=
|
||||
r=3D"#4d4d4d">Why public roadmaps help you take an engaging journey with yo=
|
||||
ur users.</font></p>
|
||||
<table class=3D"button main" bo=
|
||||
rder=3D"0" cellpadding=3D"14" cellspacing=3D"0" style=3D"display: inline-bl=
|
||||
ock; font-weight: bold; font-size: 24px; text-align: center; cursor: pointe=
|
||||
r; color: #FFFFFF; border-radius: 6px; -webkit-text-size-adjust: 100%; -ms-=
|
||||
text-size-adjust: 100%; mso-table-lspace: 0pt; mso-table-rspace: 0pt; borde=
|
||||
r-collapse: collapse !important; background: #61BD4F; margin: 10px 0 20px;"=
|
||||
align=3D"center" bgcolor=3D"#61BD4F">
|
||||
<tr>
|
||||
<td align=3D"center" vali=
|
||||
gn=3D"middle" class=3D"emailButtonContent" style=3D"-webkit-text-size-adjus=
|
||||
t: 100%; -ms-text-size-adjust: 100%; mso-table-lspace: 0pt; mso-table-rspac=
|
||||
e: 0pt;">
|
||||
<a href=3D"http://em.=
|
||||
trello.com/e/c/eyJlbWFpbF9pZCI6Ik5ERXpOVEk2RndGWDJ3SmtBQUp6QUJjbTc1Y2FBVkpx=
|
||||
bjFTR0ZWWVlWdUJBa0FGdE9qSTVOekV4TndBPSIsInBvc2l0aW9uIjo0LCJocmVmIjoiaHR0cDo=
|
||||
vL2Jsb2cudHJlbGxvLmNvbS90aXBzLWZvci1tYWtpbmctYS1wdWJsaWMtcm9hZG1hcC8_dXRtX3=
|
||||
NvdXJjZT1uZXdzbGV0dGVyJnV0bV9tZWRpdW09ZW1haWwmdXRtX2NhbXBhaWduPU1hck5ld3NsZ=
|
||||
XR0ZXIiLCJsaW5rX2lkIjoxMjA3NTc2Mn0/c45aea624a7f7b55b5849aca2a8a977670feda61=
|
||||
e6053b09cfa04b6a4392f7cb" target=3D"_blank" style=3D"text-decoration: none;=
|
||||
-webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; padding: 10px;=
|
||||
"><font color=3D"white">Hit The Road</font></a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style=3D"-webkit-text-size-adju=
|
||||
st: 100%; -ms-text-size-adjust: 100%; mso-table-lspace: 0pt; mso-table-rspa=
|
||||
ce: 0pt;">
|
||||
<center><img src=3D"https://gal=
|
||||
lery.mailchimp.com/5cb712992a906406c5eae28a7/images/fb6859d0-52cc-492b-8e22=
|
||||
-1a00326957e4.png" width=3D"440" height=3D"19" style=3D"display: block; -ms=
|
||||
-interpolation-mode: bicubic; height: auto; line-height: 100%; outline: non=
|
||||
e; text-decoration: none; max-width: 100%; margin: 10px auto; border: 0;"><=
|
||||
/center>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<!-- Hamid's Chrome Extension -->
|
||||
<td style=3D"text-align: left; -web=
|
||||
kit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; mso-table-lspace: 0=
|
||||
pt; mso-table-rspace: 0pt;" align=3D"left">
|
||||
<img src=3D"https://gallery.mai=
|
||||
lchimp.com/5cb712992a906406c5eae28a7/images/fb492782-cd62-4cbf-a030-1e3e667=
|
||||
8ed95.png" align=3D"left" width=3D"150" height=3D"150" style=3D"display: in=
|
||||
line-block; -ms-interpolation-mode: bicubic; height: auto; line-height: 100=
|
||||
%; outline: none; text-decoration: none; max-width: 100%; margin: 40px; bor=
|
||||
der: 0;">
|
||||
<h3 style=3D"font-size: 24px; f=
|
||||
ont-weight: bold; letter-spacing: normal; text-align: left; margin: 30px 50=
|
||||
px 0 0;" align=3D"left"><font color=3D"#4d4d4d">Build In Your Browser</font=
|
||||
></h3>
|
||||
<p style=3D"text-align: left; f=
|
||||
ont-size: 18px; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%;=
|
||||
line-height: 28px; margin: 10px 50px 10px auto;" align=3D"left"><font colo=
|
||||
r=3D"#4d4d4d">Trello's brand new Chrome extension means more success in les=
|
||||
s steps.</font></p>
|
||||
<table class=3D"button main" bo=
|
||||
rder=3D"0" cellpadding=3D"14" cellspacing=3D"0" style=3D"display: inline-bl=
|
||||
ock; font-weight: bold; font-size: 24px; text-align: center; cursor: pointe=
|
||||
r; color: #FFFFFF; border-radius: 6px; -webkit-text-size-adjust: 100%; -ms-=
|
||||
text-size-adjust: 100%; mso-table-lspace: 0pt; mso-table-rspace: 0pt; borde=
|
||||
r-collapse: collapse !important; background: #61BD4F; margin: 10px 0 20px;"=
|
||||
align=3D"center" bgcolor=3D"#61BD4F">
|
||||
<tr>
|
||||
<td align=3D"center" vali=
|
||||
gn=3D"middle" class=3D"emailButtonContent" style=3D"-webkit-text-size-adjus=
|
||||
t: 100%; -ms-text-size-adjust: 100%; mso-table-lspace: 0pt; mso-table-rspac=
|
||||
e: 0pt;">
|
||||
<a href=3D"http://em.=
|
||||
trello.com/e/c/eyJlbWFpbF9pZCI6Ik5ERXpOVEk2RndGWDJ3SmtBQUp6QUJjbTc1Y2FBVkpx=
|
||||
bjFTR0ZWWVlWdUJBa0FGdE9qSTVOekV4TndBPSIsInBvc2l0aW9uIjo1LCJocmVmIjoiaHR0cDo=
|
||||
vL2Jsb2cudHJlbGxvLmNvbS90cmVsbG8tY2hyb21lLWV4dGVuc2lvbi8_dXRtX3NvdXJjZT1uZX=
|
||||
dzbGV0dGVyJnV0bV9tZWRpdW09ZW1haWwmdXRtX2NhbXBhaWduPU1hck5ld3NsZXR0ZXIiLCJsa=
|
||||
W5rX2lkIjoxMjA3NTc2M30/094d36d6d6e41b9c620af4fa53421ac5ca69da0412202d5d9868=
|
||||
6f8110f835c6" target=3D"_blank" style=3D"text-decoration: none; -webkit-tex=
|
||||
t-size-adjust: 100%; -ms-text-size-adjust: 100%; padding: 10px;"><font colo=
|
||||
r=3D"white">Check It Out</font></a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td bgcolor=3D"#FFFFFF" style=3D"-w=
|
||||
ebkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; mso-table-lspace:=
|
||||
0pt; mso-table-rspace: 0pt;">
|
||||
|
||||
<img src=3D"https://gallery.mai=
|
||||
lchimp.com/5cb712992a906406c5eae28a7/images/30c42ed4-88a6-4ecb-b82a-c84475f=
|
||||
afd87.png" width=3D"600" height=3D"250" style=3D"display: block; -ms-interp=
|
||||
olation-mode: bicubic; height: auto; line-height: 100%; outline: none; text=
|
||||
-decoration: none; max-width: 100%; margin: 0; border: 0;">
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- ////////////////////////////
|
||||
//////////// FOOTER ////////////
|
||||
/////////////////////////// -->
|
||||
<tr>
|
||||
<td style=3D"-webkit-text-size-adjust: 100%; -m=
|
||||
s-text-size-adjust: 100%; mso-table-lspace: 0pt; mso-table-rspace: 0pt;">
|
||||
<p style=3D"text-align: center; color: #aaa=
|
||||
aaa; font-weight: bold; -webkit-text-size-adjust: 100%; -ms-text-size-adjus=
|
||||
t: 100%; font-size: 22px; line-height: 28px; margin: 20px auto 0;" align=3D=
|
||||
"center">Connect with us:</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id=3D"socialLinks" style=3D"text-align: cen=
|
||||
ter !important; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%;=
|
||||
mso-table-lspace: 0pt; mso-table-rspace: 0pt;" align=3D"center !important">
|
||||
<a href=3D"http://em.trello.com/e/c/eyJlbWF=
|
||||
pbF9pZCI6Ik5ERXpOVEk2RndGWDJ3SmtBQUp6QUJjbTc1Y2FBVkpxbjFTR0ZWWVlWdUJBa0FGdE=
|
||||
9qSTVOekV4TndBPSIsInBvc2l0aW9uIjo2LCJocmVmIjoiaHR0cHM6Ly93d3cuZmFjZWJvb2suY=
|
||||
29tL3RyZWxsb2FwcCIsImxpbmtfaWQiOjExMTIyNzM3fQ/6d8f3ba2e0af2a7e5dc0fbc1c7741=
|
||||
d016ffdf0b39695d9ba205db588be362ec1" style=3D"-webkit-text-size-adjust: 100=
|
||||
%; -ms-text-size-adjust: 100%; text-decoration: none; width: 40px;"><img sr=
|
||||
c=3D"https://gallery.mailchimp.com/5cb712992a906406c5eae28a7/images/e1edb4e=
|
||||
7-5b33-4c3d-a010-e15b628929af.png" width=3D"40" height=3D"40" style=3D"-ms-=
|
||||
interpolation-mode: bicubic; height: auto; line-height: 100%; outline: none=
|
||||
; text-decoration: none; max-width: 100%; margin: 10px 2px; border: 0;"></a>
|
||||
<a href=3D"http://em.trello.com/e/c/eyJlbWF=
|
||||
pbF9pZCI6Ik5ERXpOVEk2RndGWDJ3SmtBQUp6QUJjbTc1Y2FBVkpxbjFTR0ZWWVlWdUJBa0FGdE=
|
||||
9qSTVOekV4TndBPSIsInBvc2l0aW9uIjo3LCJocmVmIjoiaHR0cHM6Ly90d2l0dGVyLmNvbS90c=
|
||||
mVsbG8iLCJsaW5rX2lkIjoxMTEyMjczOH0/b5222ae2aa92571c4437f8e0d166a8bd602a6c8a=
|
||||
2e0ce8467df19d19b8cf820e" style=3D"-webkit-text-size-adjust: 100%; -ms-text=
|
||||
-size-adjust: 100%; text-decoration: none; width: 40px;"><img src=3D"https:=
|
||||
//gallery.mailchimp.com/5cb712992a906406c5eae28a7/images/24847ca6-6a1d-4069=
|
||||
-88b5-80e353cebbac.png" width=3D"40" height=3D"40" style=3D"-ms-interpolati=
|
||||
on-mode: bicubic; height: auto; line-height: 100%; outline: none; text-deco=
|
||||
ration: none; max-width: 100%; margin: 10px 2px; border: 0;"></a>
|
||||
<a href=3D"http://em.trello.com/e/c/eyJlbWF=
|
||||
pbF9pZCI6Ik5ERXpOVEk2RndGWDJ3SmtBQUp6QUJjbTc1Y2FBVkpxbjFTR0ZWWVlWdUJBa0FGdE=
|
||||
9qSTVOekV4TndBPSIsInBvc2l0aW9uIjo4LCJocmVmIjoiaHR0cHM6Ly93d3cucGludGVyZXN0L=
|
||||
mNvbS90cmVsbG9hcHAvIiwibGlua19pZCI6MTExMjI3Mzl9/8759b0e32a0e29c02bde22b6ba6=
|
||||
b1865bd08090d73f581eecb23d52df05adab9" style=3D"-webkit-text-size-adjust: 1=
|
||||
00%; -ms-text-size-adjust: 100%; text-decoration: none; width: 40px;"><img =
|
||||
src=3D"https://gallery.mailchimp.com/5cb712992a906406c5eae28a7/images/430ac=
|
||||
536-4998-4f57-b8e7-747ef53d32af.png" width=3D"40" height=3D"40" style=3D"-m=
|
||||
s-interpolation-mode: bicubic; height: auto; line-height: 100%; outline: no=
|
||||
ne; text-decoration: none; max-width: 100%; margin: 10px 2px; border: 0;"><=
|
||||
/a>
|
||||
<a href=3D"http://em.trello.com/e/c/eyJlbWF=
|
||||
pbF9pZCI6Ik5ERXpOVEk2RndGWDJ3SmtBQUp6QUJjbTc1Y2FBVkpxbjFTR0ZWWVlWdUJBa0FGdE=
|
||||
9qSTVOekV4TndBPSIsInBvc2l0aW9uIjo5LCJocmVmIjoiaHR0cHM6Ly93d3cubGlua2VkaW4uY=
|
||||
29tL2NvbXBhbnkvdHJlbGxvIiwibGlua19pZCI6MTExMjI3NDB9/9b36165efdfcceea3c9f77c=
|
||||
6461d1550ace8462f0f0458ce7f5ab2d913a83d4a" style=3D"-webkit-text-size-adjus=
|
||||
t: 100%; -ms-text-size-adjust: 100%; text-decoration: none; width: 40px;"><=
|
||||
img src=3D"https://gallery.mailchimp.com/5cb712992a906406c5eae28a7/images/a=
|
||||
b734e10-e4d9-4829-99c7-421e4daa175f.png" width=3D"40" height=3D"40" style=
|
||||
=3D"-ms-interpolation-mode: bicubic; height: auto; line-height: 100%; outli=
|
||||
ne: none; text-decoration: none; max-width: 100%; margin: 10px 2px; border:=
|
||||
0;"></a>
|
||||
<a id=3D"blogLink" href=3D"http://em.trello=
|
||||
..com/e/c/eyJlbWFpbF9pZCI6Ik5ERXpOVEk2RndGWDJ3SmtBQUp6QUJjbTc1Y2FBVkpxbjFTR0=
|
||||
ZWWVlWdUJBa0FGdE9qSTVOekV4TndBPSIsInBvc2l0aW9uIjoxMCwiaHJlZiI6Imh0dHA6Ly9ib=
|
||||
G9nLnRyZWxsby5jb20_dXRtX3NvdXJjZT1uZXdzbGV0dGVyJnV0bV9tZWRpdW09ZW1haWwmdXRt=
|
||||
X2NhbXBhaWduPU1hck5ld3NsZXR0ZXIiLCJsaW5rX2lkIjoxMjA3NTc2NH0/71efcdea7e76305=
|
||||
6f754ec9f800a1808e8ddcad15edbbfa65e3924be979de006" style=3D"-webkit-text-si=
|
||||
ze-adjust: 100%; -ms-text-size-adjust: 100%; text-decoration: none; width: =
|
||||
80px !important;"><img src=3D"https://gallery.mailchimp.com/5cb712992a90640=
|
||||
6c5eae28a7/images/f470fd65-3f90-477b-802e-8d84567280b7.png" width=3D"80" he=
|
||||
ight=3D"40" style=3D"-ms-interpolation-mode: bicubic; height: auto; line-he=
|
||||
ight: 100%; outline: none; text-decoration: none; max-width: 100%; margin: =
|
||||
10px 2px; border: 0;"></a>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td align=3D"center" valign=3D"top" style=3D"-w=
|
||||
ebkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; mso-table-lspace:=
|
||||
0pt; mso-table-rspace: 0pt;">
|
||||
<table border=3D"0" align=3D"center" cellpa=
|
||||
dding=3D"10" cellspacing=3D"0" width=3D"600" id=3D"emailFooter" style=3D"-w=
|
||||
ebkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; mso-table-lspace:=
|
||||
0pt; mso-table-rspace: 0pt; border-collapse: collapse !important; max-widt=
|
||||
h: 100% !important;">
|
||||
<tr>
|
||||
<td valign=3D"top" class=3D"foo=
|
||||
terContent" style=3D"-webkit-text-size-adjust: 100%; -ms-text-size-adjust: =
|
||||
100%; mso-table-lspace: 0pt; mso-table-rspace: 0pt;">
|
||||
|
||||
<!-- // Begin Module: Stand=
|
||||
ard Footer \\ -->
|
||||
<table border=3D"0" cellpad=
|
||||
ding=3D"10" cellspacing=3D"0" width=3D"100%" style=3D"-webkit-text-size-adj=
|
||||
ust: 100%; -ms-text-size-adjust: 100%; mso-table-lspace: 0pt; mso-table-rsp=
|
||||
ace: 0pt; border-collapse: collapse !important;">
|
||||
|
||||
|
||||
<tr>
|
||||
<td valign=3D"top" =
|
||||
style=3D"-webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; mso-ta=
|
||||
ble-lspace: 0pt; mso-table-rspace: 0pt;">
|
||||
<br>
|
||||
<div mc:edit=3D=
|
||||
"std_footer" style=3D"color: #707070; font-family: Arial; font-size: 12px; =
|
||||
line-height: 125%; text-align: center; max-width: 100% !important;" align=
|
||||
=3D"center">
|
||||
|
||||
<em>Copyrig=
|
||||
ht =C2=A9 2016 Trello Inc., All rights reserved.</em>
|
||||
<br>
|
||||
</div>
|
||||
<br>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan=3D"2" v=
|
||||
align=3D"middle" id=3D"utility" style=3D"-webkit-text-size-adjust: 100%; -m=
|
||||
s-text-size-adjust: 100%; mso-table-lspace: 0pt; mso-table-rspace: 0pt; bor=
|
||||
der-top-width: 1px; border-top-color: #dddddd; border-top-style: solid;">
|
||||
<div mc:edit=3D=
|
||||
"std_utility" style=3D"color: #707070; font-family: Arial; font-size: 12px;=
|
||||
line-height: 125%; text-align: center; max-width: 100% !important;" align=
|
||||
=3D"center">
|
||||
=C2=A0<a hr=
|
||||
ef=3D"http://em.trello.com/unsubscribe/NDEzNTI6FwFX2wJkAAJzABcm75caAVJqn1SG=
|
||||
FVYYVuBAkAFtOjI5NzExNwA=3D" class=3D"untracked" style=3D"-webkit-text-size-=
|
||||
adjust: 100%; -ms-text-size-adjust: 100%; text-decoration: underline; color=
|
||||
: #336699; font-weight: normal;">Unsubscribe</a> | <a href=3D"http://em.tre=
|
||||
llo.com/deliveries/NDEzNTI6FwFX2wJkAAJzABcm75caAVJqn1SGFVYYVuBAkAFtOjI5NzEx=
|
||||
NwA=3D" style=3D"-webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%=
|
||||
; text-decoration: underline; color: #336699; font-weight: normal;">view in=
|
||||
browser</a>=C2=A0
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<!-- // End Module: Standar=
|
||||
d Footer \\ -->
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<!-- // End Template Footer \\ -->
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
=C2=A0
|
||||
=20=20=20=20=20=20=20=20
|
||||
<img src=3D"http://em.trello.com/e/o/eyJlbWFpbF9pZCI6Ik5ERXpOVEk2RndGWD=
|
||||
J3SmtBQUp6QUJjbTc1Y2FBVkpxbjFTR0ZWWVlWdUJBa0FGdE9qSTVOekV4TndBPSJ9">
|
||||
</body>
|
||||
</html>
|
||||
|
||||
----==_mimepart_56e098c9cfc36_5269116325c17542408c--
|
||||
|
4182
lib_acl_cpp/samples/mime/mime/3.eml
Normal file
4182
lib_acl_cpp/samples/mime/mime/3.eml
Normal file
File diff suppressed because it is too large
Load Diff
251
lib_acl_cpp/samples/mime/mime/4.eml
Normal file
251
lib_acl_cpp/samples/mime/mime/4.eml
Normal file
@ -0,0 +1,251 @@
|
||||
Received: from mx1.263.net (mx1sym1 [127.0.0.1])
|
||||
by mx1.263.net (Postfix) with ESMTP id 053855D3380;
|
||||
Sat, 7 Aug 2010 13:08:33 +0800 (CST)
|
||||
X-KSVirus-check:0
|
||||
X-ABS-CHECKED:1
|
||||
X-SKE-CHECKED:1
|
||||
Received: from IOICZLB (mx1sym1 [127.0.0.1])
|
||||
by mx1.263.net (Postfix) with ESMTP id 31FB513DB2;
|
||||
Sat, 7 Aug 2010 13:08:31 +0800 (CST)
|
||||
X-SENDER-IP:116.44.150.6
|
||||
X-LOGIN-NAME:
|
||||
X-ATTACHMENT-NUM:1
|
||||
X-SENDER:stiffenersqio542@robohand.com
|
||||
X-DNS-TYPE:0
|
||||
Received: from IOICZLB (unknown [116.44.150.6])
|
||||
by mx1.263.net (Postfix) whith ESMTP id 167674B1WM2;
|
||||
Sat, 07 Aug 2010 13:08:31 +0800 (CST)
|
||||
Received: from 116.44.150.6 by mail.global.frontbridge.com; Sat, 7 Aug 2010 14:07:25 +0900
|
||||
Message-ID: <000d01cb35ee$6cb79410$6400a8c0@stiffenersqio542>
|
||||
From: "Liliana Chan" <stiffenersqio542@robohand.com>
|
||||
To: <zsxql@263.net>
|
||||
Subject: Angel Awards
|
||||
Date: Sat, 7 Aug 2010 14:07:25 +0900
|
||||
MIME-Version: 1.0
|
||||
Content-Type: multipart/mixed;
|
||||
boundary="----=_NextPart_000_0006_01CB35EE.6CB79410"
|
||||
X-Priority: 3
|
||||
X-MSMail-Priority: Normal
|
||||
X-Mailer: Microsoft Outlook Express 6.00.2900.2180
|
||||
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180
|
||||
|
||||
This is a multi-part message in MIME format.
|
||||
|
||||
------=_NextPart_000_0006_01CB35EE.6CB79410
|
||||
Content-Type: text/plain;
|
||||
format=flowed;
|
||||
charset="iso-8859-1";
|
||||
reply-type=original
|
||||
Content-Transfer-Encoding: 7bit
|
||||
|
||||
Liliana Chan
|
||||
Human Resources Coordinator
|
||||
Human Resources
|
||||
|
||||
ASPCA®
|
||||
520 8th Avenue, 7th Floor
|
||||
New York, NY 10018
|
||||
|
||||
stiffenersqio542@robohand.com
|
||||
|
||||
P: 673-154-1717, ext. 52133
|
||||
F: 082-845-5137
|
||||
|
||||
|
||||
The information contained in this e-mail, and any attachments hereto, is from The American Society for the Prevention of Cruelty to Animals® (ASPCA®) and is intended only for use by the addressee(s) named herein and may contain legally privileged and/or confidential information. If you are not the intended recipient of this e-mail, you are hereby notified that any dissemination, distribution, copying or use of the contents of this e-mail, and any attachments hereto, is strictly prohibited. If you have received this e-mail in error, please immediately notify me by reply email and permanently delete the original and any copy of this e-mail and any printout thereof.
|
||||
|
||||
------=_NextPart_000_0006_01CB35EE.6CB79410
|
||||
Content-Type: application/zip;
|
||||
name="List for Printing - 1st and 2nd Qtrs.zip"
|
||||
Content-Transfer-Encoding: base64
|
||||
Content-Disposition: attachment;
|
||||
filename="List for Printing - 1st and 2nd Qtrs.zip"
|
||||
|
||||
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
|
||||
cy5leGVQSwUGAAAAAAEAAQBWAAAA4CgAAAAA
|
||||
|
||||
------=_NextPart_000_0006_01CB35EE.6CB79410--
|
@ -268,6 +268,27 @@ static void mime_test1(acl::mime& mime, const char* path, bool htmlFirst)
|
||||
}
|
||||
|
||||
printf(">>>> saved attach file ok ...\r\n");
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// ±éÀúËùÓнڵã
|
||||
printf("------------------------------------------------------\r\n");
|
||||
|
||||
acl::string tmp;
|
||||
int i = 0;
|
||||
const std::list<acl::mime_node*>& nodes = mime.get_mime_nodes();
|
||||
for (std::list<acl::mime_node*>::const_iterator cit2 = nodes.begin();
|
||||
cit2 != nodes.end(); ++cit2)
|
||||
{
|
||||
printf("ctype: %s, stype: %s, begin: %ld, end: %ld\r\n",
|
||||
(*cit2)->get_ctype_s(), (*cit2)->get_stype_s(),
|
||||
(long) (*cit2)->get_bodyBegin(),
|
||||
(long) (*cit2)->get_bodyEnd());
|
||||
tmp.format("var/node-%d-body.txt", i++);
|
||||
(*cit2)->save(tmp);
|
||||
printf(">>>save to file: %s\r\n", tmp.c_str());
|
||||
}
|
||||
|
||||
printf("------------------------------------------------------\r\n");
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
// 将解析后的邮件再重新组合并保存在磁盘上
|
||||
|
@ -159,10 +159,6 @@ static void mime_node_free(MIME_NODE *node)
|
||||
acl_vstring_free(node->buffer);
|
||||
if (node->boundary)
|
||||
acl_vstring_free(node->boundary);
|
||||
#ifdef SAVE_BODY
|
||||
if (node->body)
|
||||
acl_vstring_free(node->body);
|
||||
#endif
|
||||
acl_myfree(node);
|
||||
}
|
||||
|
||||
|
@ -15,8 +15,6 @@ struct MAIL_ADDR
|
||||
char *comment;
|
||||
};
|
||||
|
||||
//#define SAVE_BODY
|
||||
|
||||
struct MIME_NODE
|
||||
{
|
||||
ACL_RING children; /**< 子结点集合 */
|
||||
@ -61,9 +59,6 @@ struct MIME_NODE
|
||||
|
||||
char bound_term[3];
|
||||
ACL_VSTRING *buffer; /**< headers, quoted-printable body */
|
||||
#ifdef SAVE_BODY
|
||||
ACL_VSTRING *body;
|
||||
#endif
|
||||
ACL_RING node; /**< 当前结点 */
|
||||
|
||||
off_t header_begin; /**< 结点头开始位置 */
|
||||
|
@ -607,8 +607,6 @@ static int mime_state_head(MIME_STATE *state, const char *s, int n)
|
||||
return n;
|
||||
}
|
||||
|
||||
#if 1
|
||||
|
||||
// 分析 multipart 部分体, 当匹配到一个完整的分隔符后则表明该部分数据体分析完毕
|
||||
static int mime_bound_body(MIME_STATE *state, const char * const boundary,
|
||||
MIME_NODE *node, const char *s, int n, int *finish)
|
||||
@ -621,9 +619,6 @@ static int mime_bound_body(MIME_STATE *state, const char * const boundary,
|
||||
off_t last_lf_pos = node->last_lf_pos;
|
||||
const char *bound_ptr = node->bound_ptr;
|
||||
unsigned char ch;
|
||||
#ifdef SAVE_BODY
|
||||
const unsigned char *startn = NULL;
|
||||
#endif
|
||||
|
||||
for (; cp < end; cp++) {
|
||||
ch = *cp;
|
||||
@ -637,29 +632,13 @@ static int mime_bound_body(MIME_STATE *state, const char * const boundary,
|
||||
curr_off++;
|
||||
|
||||
if (bound_ptr == NULL) {
|
||||
if (ch != *boundary) {
|
||||
#ifdef SAVE_BODY
|
||||
ADDCH(node->body, ch);
|
||||
#endif
|
||||
if (ch != *boundary)
|
||||
continue;
|
||||
}
|
||||
|
||||
#ifdef SAVE_BODY
|
||||
startn = cp;
|
||||
#endif
|
||||
bound_ptr = boundary;
|
||||
}
|
||||
|
||||
if (ch != *bound_ptr) {
|
||||
#ifdef SAVE_BODY
|
||||
// 说明之前的匹配失效,需要重新匹配,
|
||||
// 但必须将之前匹配的字符拷贝
|
||||
if (bound_ptr > boundary) {
|
||||
APPEND(node->body, boundary,
|
||||
bound_ptr - boundary);
|
||||
}
|
||||
#endif
|
||||
|
||||
bound_ptr = NULL;
|
||||
} else if (*++bound_ptr == 0) {
|
||||
/* 说明完全匹配 */
|
||||
@ -679,13 +658,6 @@ static int mime_bound_body(MIME_STATE *state, const char * const boundary,
|
||||
node->body_data_end--;
|
||||
}
|
||||
|
||||
#ifdef SAVE_BODY
|
||||
if (startn > (const unsigned char *) s) {
|
||||
/* 将匹配之前的数据拷贝 */
|
||||
APPEND(node->body, (const char*) s,
|
||||
(const char*) startn - s);
|
||||
}
|
||||
#endif
|
||||
bound_ptr = NULL;
|
||||
cp++;
|
||||
break;
|
||||
@ -700,136 +672,15 @@ static int mime_bound_body(MIME_STATE *state, const char * const boundary,
|
||||
return (int) (n - ((const char*) cp - s));
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
// 分析 multipart 部分体, 当匹配到一个完整的分隔符后则表明该部分数据体分析完毕
|
||||
static int mime_bound_body(MIME_STATE *state, const char *boundary,
|
||||
MIME_NODE *node, const char *s, int n, int *finish)
|
||||
{
|
||||
const unsigned char *cp, *end = (const unsigned char*) s + n;
|
||||
#ifdef SAVE_BODY
|
||||
const unsigned char *startn = NULL;
|
||||
#endif
|
||||
size_t bound_len = strlen(boundary);
|
||||
|
||||
// printf(">>>size: %ld\r\n", (long) ACL_VSTRING_SIZE(node->body));
|
||||
|
||||
for (cp = (const unsigned char *) s; cp < end; cp++) {
|
||||
// 记录下 \r\n 的位置
|
||||
if (*cp == '\r')
|
||||
node->last_cr_pos = state->curr_off;
|
||||
else if (*cp == '\n')
|
||||
node->last_lf_pos = state->curr_off;
|
||||
|
||||
state->curr_off++;
|
||||
|
||||
if (node->bound_ptr != NULL) {
|
||||
if (*cp != *node->bound_ptr) {
|
||||
#ifdef SAVE_BODY
|
||||
// 说明之前的匹配失效,需要重新匹配,
|
||||
// 但必须将之前匹配的字符拷贝
|
||||
if (node->bound_ptr > boundary) {
|
||||
APPEND(node->body, boundary,
|
||||
node->bound_ptr - boundary);
|
||||
}
|
||||
#endif
|
||||
|
||||
node->bound_ptr = NULL;
|
||||
} else if (*++node->bound_ptr == 0) {
|
||||
/* 说明完全匹配 */
|
||||
*finish = 1;
|
||||
|
||||
node->body_end = state->curr_off
|
||||
- (off_t) strlen(state->curr_bound);
|
||||
node->body_data_end = node->body_end;
|
||||
|
||||
// 因为 body_end 记录的是某个结点最后的位置,
|
||||
// 其中会包含, 根据协议附加的 \r\n,所以真实
|
||||
// 数据的结束位置 body_data_end 是去掉这些数据
|
||||
// 后的位置
|
||||
if (node->last_lf_pos + (off_t) bound_len
|
||||
== state->curr_off - 1)
|
||||
{
|
||||
node->body_data_end--;
|
||||
if (node->last_cr_pos + 1 == node->last_lf_pos)
|
||||
node->body_data_end--;
|
||||
}
|
||||
|
||||
#ifdef SAVE_BODY
|
||||
if (startn > (const unsigned char *) s) {
|
||||
/* 将匹配之前的数据拷贝 */
|
||||
APPEND(node->body, (const char*) s,
|
||||
(const char*) startn - s);
|
||||
}
|
||||
#endif
|
||||
node->bound_ptr = NULL;
|
||||
cp++;
|
||||
break;
|
||||
} else
|
||||
continue;
|
||||
}
|
||||
|
||||
// --> node->bound_ptr == NULL
|
||||
|
||||
if (*cp != *boundary) {
|
||||
#ifdef SAVE_BODY
|
||||
ADDCH(node->body, *cp);
|
||||
#endif
|
||||
continue;
|
||||
}
|
||||
|
||||
node->bound_ptr = boundary + 1;
|
||||
|
||||
/* 说明完全匹配 */
|
||||
if (*node->bound_ptr == 0) {
|
||||
node->body_end = state->curr_off
|
||||
- (off_t) strlen(state->curr_bound);
|
||||
node->body_data_end = node->body_end;
|
||||
|
||||
// body_end 记录的是某个结点最后的位置,其中会包含
|
||||
// 根据协议附加的 \r\n,所以真实数据的结束位置
|
||||
// body_data_end 是去掉这些数据后的位置
|
||||
if (node->last_lf_pos + (off_t) strlen(boundary)
|
||||
== node->state->curr_off - 1)
|
||||
{
|
||||
node->body_data_end--;
|
||||
if (node->last_cr_pos + 1 == node->last_lf_pos)
|
||||
node->body_data_end--;
|
||||
}
|
||||
|
||||
*finish = 1;
|
||||
node->bound_ptr = NULL;
|
||||
cp++;
|
||||
break;
|
||||
}
|
||||
|
||||
#ifdef SAVE_BODY
|
||||
startn = cp;
|
||||
#endif
|
||||
}
|
||||
|
||||
return (int) (n - ((const char*) cp - s));
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
// 分析邮件体或 multipart 部分体
|
||||
static int mime_state_body(MIME_STATE *state, const char *s, int n)
|
||||
{
|
||||
int finish = 0;
|
||||
|
||||
#ifdef SAVE_BODY
|
||||
if (state->curr_node->body == NULL)
|
||||
state->curr_node->body = acl_vstring_alloc(1024);
|
||||
#endif
|
||||
|
||||
if (state->curr_bound == NULL) {
|
||||
|
||||
/* 如果没有分隔符,则说明是文本类型,即只有正文内容 */
|
||||
|
||||
#ifdef SAVE_BODY
|
||||
APPEND(state->curr_node->body, s, n);
|
||||
#endif
|
||||
state->curr_off += n;
|
||||
|
||||
/* 因为 curr_off 指向下一个偏移位置,所以
|
||||
@ -1074,8 +925,10 @@ static struct MIME_STATUS_MACHINE status_tab[] = {
|
||||
int mime_state_update(MIME_STATE *state, const char *ptr, int n)
|
||||
{
|
||||
const char *s = ptr;
|
||||
int ret;
|
||||
|
||||
while (n > 0) {
|
||||
int ret = status_tab[state->curr_status].callback(state, s, n);
|
||||
ret = status_tab[state->curr_status].callback(state, s, n);
|
||||
if (state->curr_status == MIME_S_TERM)
|
||||
return 1;
|
||||
acl_assert(ret >= 0);
|
||||
|
@ -618,7 +618,8 @@ static bool has_content_id(MIME_NODE* node)
|
||||
}
|
||||
|
||||
const std::list<mime_attach*>& mime::get_attachments(bool enableDecode /* = true */,
|
||||
const char* toCharset /* = "gb2312" */, off_t off /* = 0 */)
|
||||
const char* toCharset /* = "gb2312" */, off_t off /* = 0 */,
|
||||
bool all /* = true */)
|
||||
{
|
||||
if (m_pAttaches == NULL)
|
||||
m_pAttaches = NEW std::list<mime_attach*>;
|
||||
@ -628,6 +629,9 @@ const std::list<mime_attach*>& mime::get_attachments(bool enableDecode /* = true
|
||||
if (m_pMimeState == NULL)
|
||||
return (*m_pAttaches);
|
||||
|
||||
#define EQ !strcasecmp
|
||||
#define CHECK(t) (EQ((t), "message") || EQ((t), "image") || EQ((t), "application"))
|
||||
|
||||
ACL_ITER iter;
|
||||
mime_attach* attach;
|
||||
MIME_NODE* node;
|
||||
@ -640,7 +644,14 @@ const std::list<mime_attach*>& mime::get_attachments(bool enableDecode /* = true
|
||||
enableDecode, toCharset, off);
|
||||
m_pAttaches->push_back(attach);
|
||||
}
|
||||
else if (all && node->ctype_s && CHECK(node->ctype_s))
|
||||
{
|
||||
attach = NEW mime_attach(m_pFilePath, node,
|
||||
enableDecode, toCharset, off);
|
||||
m_pAttaches->push_back(attach);
|
||||
}
|
||||
}
|
||||
|
||||
return (*m_pAttaches);
|
||||
}
|
||||
|
||||
|
@ -57,12 +57,22 @@ mime_node::mime_node(const char* emailFile, const MIME_NODE* node,
|
||||
m_bodyEnd = node->body_data_end + off;
|
||||
}
|
||||
|
||||
mime_node::~mime_node()
|
||||
mime_node::~mime_node(void)
|
||||
{
|
||||
delete m_headers_;
|
||||
delete m_pParent;
|
||||
}
|
||||
|
||||
const char* mime_node::get_ctype_s(void) const
|
||||
{
|
||||
return m_pMimeNode->ctype_s ? m_pMimeNode->ctype_s : "";
|
||||
}
|
||||
|
||||
const char* mime_node::get_stype_s(void) const
|
||||
{
|
||||
return m_pMimeNode->stype_s ? m_pMimeNode->stype_s : "";
|
||||
}
|
||||
|
||||
const char* mime_node::header_value(const char* name) const
|
||||
{
|
||||
ACL_ITER iter;
|
||||
@ -273,6 +283,22 @@ int mime_node::parent_stype() const
|
||||
return (m_pMimeNode->parent->stype);
|
||||
}
|
||||
|
||||
const char* mime_node::parent_ctype_s(void) const
|
||||
{
|
||||
if (m_pMimeNode->parent == NULL)
|
||||
return "";
|
||||
const char* ptr = m_pMimeNode->parent->ctype_s;
|
||||
return ptr ? ptr : "";
|
||||
}
|
||||
|
||||
const char* mime_node::parent_stype_s(void) const
|
||||
{
|
||||
if (m_pMimeNode->parent == NULL)
|
||||
return "";
|
||||
const char* ptr = m_pMimeNode->parent->stype_s;
|
||||
return ptr ? ptr : "";
|
||||
}
|
||||
|
||||
int mime_node::parent_encoding() const
|
||||
{
|
||||
if (m_pMimeNode->parent == NULL)
|
||||
|
@ -65,9 +65,9 @@ bool queue_file::create(const char* home, const char* queueName,
|
||||
memset(&tv, 0, sizeof(tv));
|
||||
gettimeofday(&tv, NULL);
|
||||
safe_snprintf(m_partName, sizeof(m_partName),
|
||||
"%08x%08x%08x%08x%08x",
|
||||
"%u_%lu_%08x_%08x_%u",
|
||||
(unsigned int) getpid(),
|
||||
(unsigned int) acl::thread::thread_self(),
|
||||
(unsigned long) acl::thread::thread_self(),
|
||||
(unsigned int) tv.tv_sec,
|
||||
(unsigned int) tv.tv_usec,
|
||||
(unsigned int) __counter);
|
||||
|
@ -271,7 +271,8 @@ redis_result* redis_client::get_redis_object(dbuf_pool* pool)
|
||||
char ch;
|
||||
if (conn_.read(ch) == false)
|
||||
{
|
||||
logger_error("read first char error, server: %s", addr_);
|
||||
logger_warn("read first char error: %s, server: %s",
|
||||
last_serror(), addr_);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -164,11 +164,24 @@ redis_client_cluster& redis_client_cluster::set_password(
|
||||
{
|
||||
// 允许 pass 为空字符串且非空指针,这样就可以当 default 值被设置时,
|
||||
// 允许部分 redis 节点无需连接密码
|
||||
if (addr && *addr && pass)
|
||||
if (addr == NULL || *addr == 0 || pass == NULL || *pass == 0)
|
||||
return *this;
|
||||
|
||||
string key(addr);
|
||||
key.lower();
|
||||
passwds_[key] = pass;
|
||||
|
||||
for (std::vector<connect_pool*>::iterator it = pools_.begin();
|
||||
it != pools_.end(); ++it)
|
||||
{
|
||||
string key(addr);
|
||||
redis_client_pool* pool = (redis_client_pool*) (*it);
|
||||
key = pool->get_addr();
|
||||
key.lower();
|
||||
passwds_[key] = pass;
|
||||
|
||||
std::map<string, string>::const_iterator cit =
|
||||
passwds_.find(key);
|
||||
if (cit != passwds_.end() || !strcasecmp(addr, "default"))
|
||||
pool->set_password(pass);
|
||||
}
|
||||
|
||||
return *this;
|
||||
|
@ -114,6 +114,11 @@ bool json_node::is_null(void) const
|
||||
|
||||
bool json_node::is_object(void) const
|
||||
{
|
||||
if (node_me_->type == ACL_JSON_T_OBJ)
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
|
||||
if (node_me_->tag_node == NULL)
|
||||
return false;
|
||||
if (node_me_->tag_node->type == ACL_JSON_T_OBJ)
|
||||
@ -315,6 +320,20 @@ json_node* json_node::next_child(void)
|
||||
return child;
|
||||
}
|
||||
|
||||
const char* json_node::operator[](const char* tag)
|
||||
{
|
||||
json_node* iter = first_child();
|
||||
while (iter)
|
||||
{
|
||||
const char* ptr = iter->tag_name();
|
||||
if (ptr != NULL && strcasecmp(ptr, tag) == 0)
|
||||
return iter->get_text();
|
||||
iter = next_child();
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int json_node::depth(void) const
|
||||
{
|
||||
return node_me_->depth;
|
||||
@ -472,6 +491,22 @@ const std::vector<json_node*>& json::getElementsByTags(const char* tags) const
|
||||
return nodes_query_;
|
||||
}
|
||||
|
||||
json_node* json::getFirstElementByTags(const char* tags) const
|
||||
{
|
||||
ACL_ARRAY* a = acl_json_getElementsByTags(json_, tags);
|
||||
if (a == NULL)
|
||||
return NULL;
|
||||
|
||||
ACL_JSON_NODE* n = (ACL_JSON_NODE*) acl_array_index(a, 0);
|
||||
acl_assert(n);
|
||||
|
||||
json_node* node = NEW json_node(n, const_cast<json*>(this));
|
||||
const_cast<json*>(this)->nodes_query_.push_back(node);
|
||||
|
||||
acl_json_free_array(a);
|
||||
return node;
|
||||
}
|
||||
|
||||
ACL_JSON* json::get_json(void) const
|
||||
{
|
||||
return json_;
|
||||
|
Loading…
Reference in New Issue
Block a user