主题中讨论的其他器件:CC3100、CC3200、 MSP430FR6989、 CC3220SF、 CC3100BOOST、UNIFLASH、 CC31XXEMUBOOST、 CC3100MOD、 MSP430F5529
您好、专家!
我们的客户有一个问题、如下所示:
TI CC3100 SDK-Ver-1.3.1电子邮件不再工作
A.解决办法请求
我们正在寻找有关 CC3100电子邮件示例的 TI 修复。 当前发布的 CC3100电子邮件示例不再起作用。 因此请提供解决方案、或提供更新警告、指出 CC3100不再支持电子邮件。
b. CC3100电子邮件代码使用 Gmail 合作超过3年
3年多来、我们已在使用 WiFi 的 F5529和 FR6989 LaunchPad 微控制器上安装了使用 SDK-1.3.1对多个 TI CC3100进行了升级、以"从 SNTP 计时器服务器获取计时器"、 以及使用 SMTP 从 Gmail 发送"状态电子邮件"并将电子邮件发送到多种不同的目标电子邮件服务。
2021年、Gmail 要求升级像带有 CC3100 WiFi 卡的 TI 微控制器这样的 AP、以使用 Gmail 生成的 AP 密码。 创建 Gmail AP 密码可以使 TI 器件成功发送电子邮件。
c. TI CC3100电子邮件长时间不适用于 Gmail、Outlook.com target="_blank">Outlook.com 电子邮件或 SOHO 电子邮件
2022年的 Gmail 发布的结果是、他们未来很快就不支持 AP 密码、设备更不安全。 2023年1月27日星期五、多个采用 CC3100的 TI 微控制器在不同状态下均停止发送电子邮件状态。 这些微控制器无法进行远程软件更新、因此不会对多个微控制器进行代码更改。 此外、在多个城市/州中的多个微型系统在完全相同的日期和时间发生代码腐败的可能性接近零。 很显然、某些 Gmail 代码和安全的更改现在阻止了 TI 的 Micro。
我们尝试了 Outlook.com 电子邮件、SOHO 电子邮件、AOL 电子邮件和 Proton 电子邮件。 这些电子邮件服务均不能与 TI CC3100和 SDK-1.3.1配合使用。 所有这些电子邮件服务都通过代码逐步完成并以"器件无法发送电子邮件"结尾。
D.代码序列跟踪
这表明器件可以首先连接到 SNPT 时间服务器并成功获取时间。 这证明 CC3100硬件、大部分代码、WiFi 访问等都仍在运行。 发送电子邮件跟踪显示无法发送电子邮件。
获取 Time 应用-版本1.3.0
**
行1774设备配置为默认状态
线路1791设备作为药柜启动
获取与 AP 和 IP 建立的线路1803连接
Get HostIP 后的行1808 LH
线路1818 LH 就在 createConnection 之后
getSNTPTTime 前的行1825 LH ...
socket.c 中的第336行
socket.c、_sl_BuildAddress 中的第95行
socket.c、_sl_BuildAddress 中的第95行
getSNTPTTime 之后的行1829 LH ...
RetVal = sl_WlanDisconnect ()之后_i32 disconnectFromAP ()中的第1488行;
在 if (0 == RetVal)后面的_i32 disconnectFromAP ()中的第1490行
应应用的请求、从 AP 断开1022线路器件
电子邮件应用程序-版本1.3.0
**
第881行器件配置为默认状态
线路898设备已作为药柜启动
第171行电子邮件用户名
第180行电子邮件密码
第159行电子邮件端口、安全性
采集使用 AP 和 IP 建立的线路915连接
线路918正在发送电子邮件...
第189行电子邮件目标
第1253行、位于...destination_email 后面
第198行电子邮件主题
第1265行... LHemailSubject 之后
第208行:电子邮件正文
行1278在...LHemailBody 之后
如果 TLS 创建安全套接字、则_smtpConnect 中的第301行
smtpConnect 套接字中的第306行
连接到套接字之前、_smtpConnect 中的333行
socket.c、_sl_Connect 中的第513行
socket.c、_sl_BuildAddress 中的第95行
socket.c 中的第554行_sl_Connect Verify_RET_OK
连接到套接字后、_smtpConnect 中的行335
如果 Status < 0 && SL_ESECSNOVERIFY!= Status、则_smtpConnect 中的第339行
行1281在...Status = sl_NetAppEmailConnect ()之后
第922行设备无法发送电子邮件
RetVal = sl_WlanDisconnect ()之后_i32 disconnectFromAP ()中的第1488行;
在 if (0 == RetVal)后面的_i32 disconnectFromAP ()中的第1490行
应应用程序的请求、断开线路1011器件与 AP 的连接
这是发送电子邮件尝试的子集更长版本、更详细地显示所有 SPI 读取和写入 CC3100器件的信息。 就在"Line 922 Device Could not send the email"(线路922设备无法发送电子邮件)前后
socket.c 中的第554行_sl_Connect Verify_RET_OK
SPI.c SPI_Write (...)中的第211行
SPI.c 中的第239行 SPI_READ (...)
SPI.c 中的第239行 SPI_READ (...)
SPI.c 中的第239行 SPI_READ (...)
连接到套接字后、_smtpConnect 中的行335
如果 Status < 0 && SL_ESECSNOVERIFY!= Status、则_smtpConnect 中的第339行
行1281在...Status = sl_NetAppEmailConnect ()之后
第922行设备无法发送电子邮件
SPI.c SPI_Write (...)中的第211行
SPI.c SPI_Write (...)中的第211行
SPI.c SPI_Write (...)中的第211行
SPI.c 中的第239行 SPI_READ (...)
SPI.c 中的第239行 SPI_READ (...)
SPI.c 中的第239行 SPI_READ (...)
RetVal = sl_WlanDisconnect ()之后_i32 disconnectFromAP ()中的第1488行;
在 if (0 == RetVal)后面的_i32 disconnectFromAP ()中的第1490行
SPI.c SPI_Write (...)中的第211行
SPI.c 中的第239行 SPI_READ (...)
SPI.c 中的第239行 SPI_READ (...)
SPI.c 中的第239行 SPI_READ (...)
应应用程序的请求、断开线路1011器件与 AP 的连接
e.选择代码提取以显示主代码路径
E.1 _SetEmail
我怀疑 CC3100 SDK-1.3.0不再工作的原因与电子邮件服务安全更改有关。 我从2014年到2023年成功使用了 TLS……μ s.so、已经使用了9年了。 我试过端口465与 SSL 也一样,但这也不起作用。
eMailServerSetting.Family = AF_INET;
// eMailServerSetting.Port = Gmail_host_port;// config.h 中的第27行#define Gmail_host_port 465
// eMailServerSetting.Port = Outlook_HOST_PORT;//行 i41n config.h #define Outlook_port 587
eMailServerSetting.Port = Zoho _HOST_PORT;//Line i41n config.h #define Outlook_port 587
// eMailServerSetting.Port = verizon_host_port;// 2-14-2023更改为 verizon,因此可以尝试 LBH2015NVR
eMailServerSetting.IP = SL_IPV4_VAL (74、125、129、108);
eMailServerSeting.SecurityMethod = SL_SO_SEC_METHO_TLSv1_2;//最初版本2014年1月至2023年1月
eMailServerSetting.SecurityCypher = SL_SEC_MASK_TLS_RSA_WITH_AES_256_CBC_SHA;// Original 2014年1月至2023日
//2-23-2023 Thomas Schmitt link 称 Gmail 端口465使用 SSL
// CC3100 SDK1.3.0显示了大约25个传输安全选项,其中两个采用 SSL
// SSLv3 SSL_RSA_WITH_RC4_128_SHA
// SSLv3 SSL_RSA_WITH_RC4_128_MD5
// eMailServerSetting.SecurityMethod = SL_SO_SEC_METHOD_SSLv3;
// eMailServerSetting.SecurityCypher = SL_SEC_MASK_SSL_RSA_WITH_RC4_128_SHA;
// eMailServerSetting.SecurityCypher = SL_SEC_MASK_SSL_RSA_WITH_RC4_128_MD5;
E.2 Config.h
请参阅下面的设置:Gmail、Yahoo、Outlook、Zoho Per There 网站
#define SMTP_BUF_LEN 100
//#define Gmail_host_name"smtp.gmail.com
//#define Gmail_host_port 465 // emailAndGetTime.c eMailServerSetting.Port = Gmail_host_port;
//#define Gmail_host_port 465 // emailAndGetTime.c 的2-23-2023链接 Thomas 465可以与 SSL 一起使用
//#define Gmail_host_port 587 //10-5-2022 Google 文章说端口465不再被接受为标准端口 NO2 587、2525和25
// 2-18-2023尝试587、2525和25
//另一篇文章说对于纯文本,使用端口465表示 SSL,使用端口587表示 TLS
// emailAndGetTime.c 中的第1215行定义了安全方法..... 请参阅下面看起来像 TLS V1_2
// eMailServerSetting.SecurityMethod = SL_SO_SEC_METHOD_TLSv1_2;
//#define yahoo_host_name"smtp.mail.yahoo.com
//#define yahoo_host_port 25.
//#define Outlook_host_name"smtp-mail.outlook.com
//#define Outlook_HOST_PORT 587 //端口号:587 (带 TLS)
//#define outlook_host_port 25 //备选端口号:25 (无 TLS/SSL) 2-21-2023、但在 emailAndGetTime.c 中、我不知道如何指定无
#define Zoho _host_name"smtp.zoho.com
//#define Zoho HOST_PORT 465 //端口号:465 (含 SSL)
#define Zoho HOST_PORT 587 //端口号:587 (含 TLS)
/// 2 - 14-2023.
//#define AOL_HOST_NAME"smtp.aol.com
//#define verizone_host_name "smtp.verizon.net target="_blank">smtp.verizon.net
//#define Gmail_host_name "smtp.verizon.net //无法找到任何地方,因为它是指 Gmail_host_name ,所以我可以更改为 Verizon 所以假的它
//#define Verizon_host_port 465 //2-14-2023,发现 AOL 端口也是465
e.3行137–217 _i32 sl_NetAppEmailSet
_i32 sl_NetAppEmailSet (_u8命令、_u8 pValueLen、
_u8 *pValue)
{
SlNetAppEmailOpt_t* pEmailOpt = 0;
SlNetAppSourceEmail_t* pSourceEmail = NULL;
SlNetAppSourcePassword_t* pSourcePassword = NULL;
SlNetAppDestination_t* pDestinationEmail = NULL;
SlNetAppEmailSubject_t* pSubject = NULL;
switch (命令)
{
案例 NETAPP_ADVANCED_OPT:
pEmailOpt =(SlNetAppEmailOpt_t*) pValue;
G_EmailOpt.Port = pEmailOpt->Port;
G_EmailOpt.Family = pEmailOpt->Family;
G_EmailOpt.SecurityMethod = pEmailOpt->SecurityMethod;
G_EmailOpt.SecurityCypher = pEmailOpt->SecurityCypher;
G_EmailOpt.IP = pEmailOpt->IP;
G_EmailSetStatus++= 1;
CLI_Write ("第159行电子邮件端口、安全性\n\r\n);//2-16-2023已添加
// cli_Write ("\n 行159电子邮件端口:%d\n\"、端口);//提供错误
中断;
//查看 mytimers.c 中的恒温器控制器代码;在此处工作但不在此处
// printf ("\n 消息正文为:%d\n",usiGMTOffsetHrSet);//%d 是整数
// CLI_Write ("\n 消息正文是:%s\n",LHemailBody);
案例 NETAPP_SOURCE_EMAIL:
pSourceEmail =(SlNetAppSourceEmail_t*) pValue;
PAL_Memset (g_Email.Username、'\0'、MAX_USERNAME_LEN);
PAL_memcpy (g_Email.Username、pSourceEmail->Username、pValueLen);
G_EmailSetStatus+=2;
CLI_Write ("第171行电子邮件用户名\n\r\n ");//2-16-2023已添加
中断;
案例 NETAPP_PASSWORD:
pSourcePassword =(SlNetAppSourcePassword_t*) pValue;
PAL_Memset (g_SourcePass.Password、'\0'、MAX_PASSWORD_LEN);
PAL_memcpy (g_SourcePass.Password、pSourcePassword->Password、pValueLen);
G_EmailSetStatus+=4;
CLI_Write ("第180行电子邮件密码\n\r\n ");//2-16-2023已添加
中断;
案例 NETAPP_DEST_EMAIL:
pDestinationEmail=(SlNetAppDestination_t*)pValue;
PAL_Memset (g_destination.Email target="_blank"> Destination.Email、"\0"、MAX_DEST_EMAIL_LEN);
PAL_memcpy(g_Destination.Email, pDestinationEmail->Email, pValueLen);
G_EmailSetStatus+=8;
CLI_Write ("第189行电子邮件目标\n\r\n ");//2-16-2023已添加
中断;
案例 NETAPP_PROJECT:
pSubject=(SlNetAppEmailSubject_t*) pValue;
PAL_Memset (g_subject.value、"\0"、MAX_Subject_LEN);
PAL_memcpy (g_subject.value、pSubject->value、pValueLen);
G_EmailSetStatus+=16;
CLI_Write ("第198行电子邮件主题\n\n");//2-16-2023已添加
中断;
案例 NETAPP_MESSAGE:
if (pValueLen >(MAX_MESSAGE_LEN - 1))
{
assert_on_error (email_set_invalid_message);
}
PAL_Memset (消息、"\0"、MAX_MESSAGE_LEN);
PAL_memcpy (message,pValue,pValueLen);
CLI_Write ("第208行电子邮件正文\n\n");//2-16-2023已添加
中断;
默认值:
CLI_Write ((_u8*)"\n\rLine209错误:默认大小写\n\r\n);
assert_on_error (email_set_invalid_case);
}
返回成功;
}
e.4行271–351 _i32 _smtpConnect
静态_i32 _smtpConnect (void)
{
SlSockAddrIn_t LocalAddr;
SlTimeval_t tTimeout;
_i32密码= 0;
_i32 LocalAddrSize = 0;
i8方法= 0;
_i32状态= 0;
LocalAddr.sin_family = g_EmailOpt.Family;
LocalAddr.sin_port = sl_Htons (g_EmailOpt.Port);
LocalAddr.sin_addr.s_addr = sl_Htonl (g_EmailOpt.ip);
LocalAddrSize = sizeof (SlSockAddrIn_t);
/*如果需要 TLS */
if (g_EmailOpt.SecurityMethod <= 5)
{
/*创建安全套接字*/
smtpSocket = SL_Socket (SL_AF_INET、SL_SOCK_STREAM、SL_SEC_SOCKET);
assert_on_error (smtpSocket);
tTimeout.tv target="_blank">tTimeout.tv_sec = 10;
tTimeout.tv_usec = 90000;
状态= sl_SetSockOpt (smtpsocket、SOL_SOCKET、SL_SO_RCVTIMEO、
tTimeout、sizeof (SlTimeval_t)(&T);
ASSERT_ON_ERROR (状态);
方法= g_EmailOpt.SecurityMethod;
cipher = g_EmailOpt.SecurityCypher;
CLI_Write ("如果 TLS 创建安全套接字\n\r"、则_smtpConnect 中的第301行);
/*设置刚刚定义的套接字选项*/
状态= SL_SetSockOpt (smtpsocket、SL_SOL_SOCKET、SL_SO_SECMETHOD、
method、sizeof (method)(&方法);
CLI_Write ("_smtpConnect Set Socket 中的第306行\n\r");
if (状态<0)
{
sl_Close (smtpSocket);
ASSERT_ON_ERROR (状态);
CLI_Write ("_smtpConnect sl_Close smtpSocket 步骤1 \n\r\n"中的第311行);
}
状态= SL_SetSockOpt (smtpsocket、SL_SOL_SOCKET、SL_SO_SECURE_MASK、
cipher、sizeof (cipher)(密码(&C));
if (状态<0)
{
sl_Close (smtpSocket);
ASSERT_ON_ERROR (状态);
CLI_Write ("_smtpConnect sl_Close smtpSocket 步骤2\n\r\n 中的第319行);
}
}
/*如果不需要 TLS */
方案
{
/*创建套接字*/
smtpSocket = SL_Socket (SL_AF_INET、SL_SOCK_STREAM、SL_IPPROTO_TCP);
assert_on_error (smtpSocket);
CLI_Write ("在不需要 TLS 的情况下创建套接字\n\r"后、_smtpConnect 中的第329行);
}
/*连接至套接字*/
CLI_Write ("连接到套接字前,_smtpConnect 中的第333行\n\r\n);
状态= sl_Connect (smtpsocket、(SlSockAddr_t *)&LocalAddr、LocalAddrSize);
CLI_Write ("连接到套接字后_smtpConnect 中的第335行\n\r\n);//2-16-2023可以打印此内容
if (((Status < 0)&&(SL_ESECSNOVERIFY!= Status))
{
cli_Write ("_smtpConnect 中的第339行(如果 Status < 0 && SL_ESECSNOVERIFY!= Status \n\r\n);//2-16-2023打印此页
//
// 2023年1月30日,我得到了上面的 CLI 写入,但没有更多
//显示连接到套接字不成功
//下一个写我得到的是在914行
//
ASSERT_ON_ERROR (状态);
CLI_Write ("连接到套接字后_smtpConnect 状态中的第347行"\n");//2-16-2023不会执行此操作
}
CLI_Write ("在返回成功前,_smtpConnect 中的第349行\n\r\n");//2-16-2023不能执行此操作
返回成功;
}
E.5行839–951 int LHSendEmail()
int LHSendEmail()
{
usiEmailDummy = 0;
usiEmail1OrTime2 = 1;//在函数调用中,电子邮件设置为1,获取时间设置为2
i32 RetVal =-1;
RetVal = initializeAppVariables();
ASSERT_ON_ERROR (RetVal);
///*停止 WDT 并初始化 MCU 的系统时钟*/
// stopWDT();
// initClk();
/*配置命令行界面*/
CLI_Configure();
displaybanna();
/*
*以下函数通过清理将设备配置为默认状态
*存储在 NVMEM 中的持久性设置(即连接配置文件&
*策略、电源策略等)
*
*如果开发人员确定,应用程序可以选择跳过此步骤
*设备在应用程序启动时处于默认状态
*
*请注意、在上完成的所有配置文件和持续设置
*设备将丢失
*/
RetVal = configureSimpleLinkToDefaultState ();
if (RetVal < 0)
{
如果(DEVICE_NOT_IN_STATION_MODE == RetVal)
CLI_Write ("行874在其默认状态下配置设备失败\n\r\n);
// 5-24-2020 ,我看不到 loop_forever ()的值;因为这只是在这个时候把程序永久挂起
//我认为更好的继续,因为已经打印出的失败,也许一段时间后,它会起作用
// loop_forever ();
}
CLI_Write ("行881设备配置为默认状态\n\r\n);
/*
*初始化 CC3100器件
*假设设备已配置为工作站模式
*它处于默认状态
*/
RetVal = sl_Start (0、0、0);
如果((RetVal < 0)||
(ROLE_STA != RetVal))
{
CLI_Write ("第892行无法启动设备\n\r\n ");
// 5-24-2020 ,我看不到 loop_forever ()的值;因为这只是在这个时候把程序永久挂起
//我认为更好的继续,因为已经打印出的失败,也许一段时间后,它会起作用
// loop_forever ();
}
CLI_Write ("第898行设备作为工作站启动\n\r\n);
/*配置源电子邮件*/
RetVal = setEmail();
if (RetVal < 0)
loop_forever ();
/*正在连接到 WLAN AP */
RetVal =建立连接 WithAP();
if (RetVal < 0)
{
CLI_Write ("第909行无法与 AP 建立连接\n\r\n);
// 5-24-2020 ,我看不到 loop_forever ()的值;因为这只是在这个时候把程序永久挂起
//我认为更好的继续,因为已经打印出的失败,也许一段时间后,它会起作用
// loop_forever ();
}
CLI_Write ("通过 AP 和 IP 建立的线路915连接已获取\n\r\n);
/*配置并发送电子邮件*/
CLI_Write ("第918行正在发送电子邮件... \n\r\n);//2023年1月30日成功获得此内容
RetVal = SendEmail();
如果(RetVal < 0)
{
CLI_Write ("第922行设备无法发送电子邮件\n\n");
// 5-24-2020 ,我看不到 loop_forever ()的值;因为这只是在这个时候把程序永久挂起
//我认为更好的继续,因为已经打印出的失败,也许一段时间后,它会起作用
// loop_forever ();
// loop_forever ();// 2023年1月30日将其放回,因为 GET 设备无法发送电子邮件\n\r\n
//没有解决不发送电子邮件的问题,只是锁定在这一点
}
方案
{
CLI_Write ("第931行电子邮件已成功发送\n\r\n ");
}
/*断开与 AP 的连接*/
RetVal = disconnectFromAP ();
if (RetVal < 0)
{
CLI_Write ("行938无法从 AP 断开\n\r\n);
// 5-24-2020 ,我看不到 loop_forever ()的值;因为这只是在这个时候把程序永久挂起
//我认为更好的继续,因为已经打印出的失败,也许一段时间后,它会起作用
// loop_forever ();
}
RetVal = SL_Stop (SL_STOP_TIMEOUT);
// 5-24-2020 ,我看不到 loop_forever ()的值;因为这只是在这个时候把程序永久挂起
//我认为更好的继续,因为已经打印出的失败,也许一段时间后,它会起作用
// if (RetVal < 0)
// loop_forever ();
返回0;
}//结束括号用于 int LHSendEmail()
E.6行1194-1233 _i32 setEmail()
静态_i32 setEmail()
{
i32 RetVal =-1;
SlNetAppSourceEmail_t sourceEmailId ={0};
SlNetAppSourcePassword_t sourceEmailPwd ={0};
SlNetAppEmailOpt_t eMailServerSetting ={0};
PAL_memcpy (sourceEmailId.Username、user、PAL_strlen (user)+1);
RetVal = sl_NetAppEmailSet (NETAPP_SOURCE_EMAIL、PAL_strlen (USER)+1、
(_u8*)&sourceEmailId;
ASSERT_ON_ERROR (RetVal);
PAL_memcpy (sourceEmailPwd.Password、PASS、PAL_strlen (Pass)+1);
RetVal = sl_NetAppEmailSet (NETAPP_PASSWORD、PAL_strlen (PASS)+1、
(_u8*)&sourceEmailPwd);
ASSERT_ON_ERROR (RetVal);
eMailServerSetting.Family = AF_INET;
// eMailServerSetting.Port = Gmail_host_port;// config.h 中的第27行#define Gmail_host_port 465
// eMailServerSetting.Port = Outlook_HOST_PORT;//行 i41n config.h #define Outlook_port 587
eMailServerSetting.Port = Zoho _HOST_PORT;//Line i41n config.h #define Outlook_port 587
// eMailServerSetting.Port = verizon_host_port;// 2-14-2023更改为 verizon,因此可以尝试 LBH2015NVR
eMailServerSetting.IP = SL_IPV4_VAL (74、125、129、108);
eMailServerSeting.SecurityMethod = SL_SO_SEC_METHO_TLSv1_2;//最初版本2014年1月至2023年1月
eMailServerSetting.SecurityCypher = SL_SEC_MASK_TLS_RSA_WITH_AES_256_CBC_SHA;// Original 2014年1月至2023日
//2-23-2023 Thomas Schmitt link 称 Gmail 端口465使用 SSL
// CC3100 SDK1.3.0显示了大约25个传输安全选项,其中两个采用 SSL
// SSLv3 SSL_RSA_WITH_RC4_128_SHA
// SSLv3 SSL_RSA_WITH_RC4_128_MD5
// eMailServerSetting.SecurityMethod = SL_SO_SEC_METHOD_SSLv3;
// eMailServerSetting.SecurityCypher = SL_SEC_MASK_SSL_RSA_WITH_RC4_128_SHA;
// eMailServerSetting.SecurityCypher = SL_SEC_MASK_SSL_RSA_WITH_RC4_128_MD5;
RetVal = sl_NetAppEmailSet (NETAPP_ADVANCE_OPT、sizeof (SlNetAppEmailOpt_t)、
(_u8*)&eMailServerSetting;
ASSERT_ON_ERROR (RetVal);
返回成功;
}
E.7行1246–1290 _i32 SendEmail()
静态_i32 SendEmail()
{
_i32状态=-1;
状态= sl_NetAppEmailSet (NETAPP_DEST_EMAIL、
PAL_strlen (destination_email)、
(_u8 *) destination_email);
ASSERT_ON_ERROR (状态);
CLI_Write ("在...destination_email\n\r\n 之后的第1253行);//Jan 30、2023添加了此内容
// Status = sl_NetAppEmailSet (NetApp_Subject、
// PAL_strlen (email_subject),
//(_u8 *) email_subject);
//LH 添加了5-20-2020以使用我的字符数组作为电子邮件主题
状态= sl_NetAppEmailSet (NetApp_Subject、
PAL_strlen (LHemailSubject)、
(_u8 *) HemailSubject);
ASSERT_ON_ERROR (状态);
CLI_Write ("第1265行、在...LHemailSubject \n\r\n)之后;//Jan 30、2023添加了此内容、将打印此内容
// Status = sl_NetAppEmailSet (NETAPP_MESSAGE、
// PAL_strlen (email_message),
//(_u8 *) email_message);
//LH 添加了5-20-2020以使用我的字符数组作为电子邮件信息
状态= sl_NetAppEmailSet (NETAPP_MESSAGE、
PAL_strlen (LHemailBody)、
(_u8 *) LHemailBody);
ASSERT_ON_ERROR (状态);
CLI_Write ("...LHemailBody \n\r\n 之后的第1278行);//JAN 30、2023添加了此内容、即会打印此内容
状态= sl_NetAppEmailConnect ();//2-16-2022年似乎此函数未完成
CLI_Write ("第1281行在...Status = sl_NetAppEmailConnect ()\n\n");//2-16-2022、未打印此页
ASSERT_ON_ERROR (状态);
CLI_Write ("第1283行、在...sl_NetAppEmailConnect \n\r\n 之后);//JAN 30、2023添加了此内容、但未打印此内容
状态= sl_NetAppEmailSend ();
ASSERT_ON_ERROR (状态);
CLI_Write ("第1287行、在...sl_NetAppEmailSend \n\r\n 之后);//添加了2023年1月30日、未打印此内容
返回成功;
}
e.8行1480–1498 _i32 disconnectFromAP ()
静态_i32脱接 FromAP()
{
i32 RetVal =-1;
/*
*当"已断开连接"时,该函数返回0 ,如果已断开,则返回负数
*如果返回0、则等待"断开连接"事件、忽略其他返回代码
*/
RetVal = sl_WlanDisconnect ();
cli_Write (" RetVal = sl_WlanDisconnect ();\n\r\n)之后_i32 disconnectFromAP ()中的第1488行;
if (0 => RetVal)
cli_Write ("在_i32 disconnectFromAP()中的第1490行、位于 if (0 == RetVal)\n\r\n);
{
/*等待*/
while (is_connected (g_Status)){_SlNonOsMainLoopTask ();}
}
返回成功;
}
结束
Terma 术语跟踪逐行显示代码是如何步进各种函数调用的。 我有包括代码行、这样您就可以看到它执行了哪些行、直到它说无法发送电子邮件。
**
第881行器件配置为默认状态
线路898设备已作为药柜启动
第171行电子邮件用户名
第180行电子邮件密码
第159行电子邮件端口、安全性
采集使用 AP 和 IP 建立的线路915连接
线路918正在发送电子邮件...
第189行电子邮件目标
第1253行、位于...destination_email 后面
第198行电子邮件主题
第1265行... LHemailSubject 之后
第208行:电子邮件正文
行1278在...LHemailBody 之后
如果 TLS 创建安全套接字、则_smtpConnect 中的第301行
smtpConnect 套接字中的第306行
连接到套接字之前、_smtpConnect 中的333行
socket.c、_sl_Connect 中的第513行
socket.c、_sl_BuildAddress 中的第95行
socket.c 中的第554行_sl_Connect Verify_RET_OK
连接到套接字后、_smtpConnect 中的行335
如果 Status < 0 && SL_ESECSNOVERIFY!= Status、则_smtpConnect 中的第339行
行1281在...Status = sl_NetAppEmailConnect ()之后
第922行设备无法发送电子邮件
RetVal = sl_WlanDisconnect ()之后_i32 disconnectFromAP ()中的第1488行;
在 if (0 == RetVal)后面的_i32 disconnectFromAP ()中的第1490行
应应用程序的请求、断开线路1011器件与 AP 的连接
// eMailServerSetting.Port = Gmail_host_port;// config.h 中的第27行#define Gmail_host_port 465
// eMailServerSetting.Port = Outlook_HOST_PORT;//行 i41n config.h #define Outlook_port 587
eMailServerSetting.Port = Zoho _HOST_PORT;//Line i41n config.h #define Outlook_port 587
// eMailServerSetting.Port = verizon_host_port;// 2-14-2023更改为 verizon,因此可以尝试 LBH2015NVR
eMailServerSetting.IP = SL_IPV4_VAL (74、125、129、108);
eMailServerSeting.SecurityMethod = SL_SO_SEC_METHO_TLSv1_2;//最初版本2014年1月至2023年1月
eMailServerSetting.SecurityCypher = SL_SEC_MASK_TLS_RSA_WITH_AES_256_CBC_SHA;// Original 2014年1月至2023日
我敢肯定 TI 会告知他们有一个修复程序、因此 CC3100 SDK-1.3.0仍可以发送电子邮件。
我在聊天中提到过、但在随附的电子邮件中没有看到。
我们得到 SMTP 返回代码-111。
Google 表示
当连接远程 SMTP 服务器时出现问题时、会出现 SMTP 111错误。 例如、您可能会遇到该错误 无效的发件人域或防火墙问题。
如果您需要更多信息、请告诉我。 我想我已提交了您需要的所有代码部分。 我已经粘贴了使用 F5529和 FR6989 micros 运行了9年的完整 Code Composer Studio emailAndGetTime.c 和.h 以及 simplelink 文件、其中包括 SDK_1.3.0。
您应该能够加载并运行该文件。 主函数的调用是:
RET = LHGetTime (); //调用 emailAndGetTime.c 中的函数来获取时间
RET = LHSendEmail (); //调用 emailAndGetTime.c 中的函数以发送电子邮件
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
我更新了要发布的问题描述文档。 我还计划将一个基于 FR6989并使用 CC3100 Boost 导出的 Code Composer Studio 工作应用程序发布。
我很高兴与大家分享这个工作代码、这样 TI 电子邮件/安全专家就可以很轻松地加载和运行这个程序并开发出解决方案。 emailAndGetTime.c 代码是99%不变的原始 TI SDK-1.3.0代码、具有增强的应用链接。 所以所有的 WiFi、smpt 等代码都是原始的 TI 代码、但显然现在缺少能够处理新的电子邮件服务器安全协议。
我也希望其它 TI 客户发现广泛的 LCD 显示代码和电子邮件消息创建框架/代码对他们的项目有帮助。
附件为发布和 CCS 导出应用准备好使用 CC3100升压子卡加载到 FR6989微控制器中。
感谢您的帮助。
杰拉德