精华内容
下载资源
问答
  • 相比免费邮箱163vip邮箱更安全稳定,所以大家通常用VIP邮箱来办公。VIP邮箱品牌有TOM邮箱网易、新浪等。在网上看到有关VIP邮箱登录问题汇总了几个,希望对大家有帮助~ 为何登录邮箱时页面显示空白或加载中? ...

    相比免费邮箱,163vip邮箱更安全稳定,所以大家通常用VIP邮箱来办公。VIP邮箱品牌有TOM邮箱、网易、新浪等。在网上看到有关VIP邮箱登录问题汇总了几个,希望对大家有帮助~

    为何登录邮箱时页面显示空白或加载中?
    出现此情况可能由于本机电脑IE浏览器积累的临时文件过多导致,建议对IE浏览器清理后,再进行操作,也可更换为Google或其他浏览器,兼容性更强。

    如何加速您的邮箱登录?
    输入用户名和密码登录后,页面一直处于数据加载的状态,反复登录依旧不能成功进入邮箱,或登录邮箱后反应较慢。

    您可以通过以下方法来加速您的邮箱登录:

    方法1:强制刷新。在数据加载页面,按CTRL+F5,强制刷新后,等待片刻即可。

    方法2:清除浏览器缓存

    多次登陆错误导致账号被锁定,怎么办?
    若您是TOM邮箱,可以通过微信扫码进入邮箱,只要不更换微信,就不会出现锁定的情况

    若您的TOM邮箱帐号未绑定任何安全信息,建议等待2-3个小时后,输入正确的密码重新登录。

    除了在网页端登录,大家也可以用微信登录随心邮使用,只要登录一次就不用再登录了。TOM随心邮与网页端的邮件同步,新邮件在微信里实时提醒,并可收发邮件,跟网页端一样支持SSL安全加密传输邮件,出差电脑不在旁边也不怕错过邮件。

    展开全文
  • 0、有关TLS和SSL SSL/TLS是用来加密邮件流的。假设不加密的话非常easy被人破解。 ...只是既然是要发送广告邮件,这个就不用在意了,...这里临时仅仅是使用163邮箱,作为发送端 1、基本的类 SendMa...

    0、有关TLS和SSL

    SSL/TLS是用来加密邮件流的。

    假设不加密的话非常easy被人破解。



    只是既然是要发送广告邮件,这个就不用在意了,使用没加密的即可。

    另外在使用的时候,发现,qq的邮箱须要使用SSL才干连接上,这个再以后须要用qq发群邮件的时候再来处理。这里临时仅仅是使用163的邮箱,作为发送端

    1、基本的类

    SendMail.h:
    /***********************************************************************
    *发送邮件模块头文件
    *能够发送文本和附件(支持多个附件一起发送)
    *************************************************************************/
    
    #ifndef  __INCLUDE_SEND_MAIL_H__
    #define  __INCLUDE_SEND_MAIL_H__
    
    
    #include "vector"
    using namespace std;
    
    #include "atlenc.h"
    #include "winsock2.h"
    
    #pragma comment(lib, "wsock32.lib")
    
    
    struct sMailInfo					//邮件信息
    {
    	char *mailbox_user_name;		//用户登录邮箱的名称
    	char *mailbox_user_pwd;			//用户登录邮箱的password
    	char *mailbox_sender_show_name;	//用户发送时显示的名称
    	char *mailbox_sender;			//发送者的邮箱地址
    	char *mailbox_receiver;			//接收者的邮箱地址
    	char *mail_title;				//邮箱标题
    	char *mail_body;				//邮件文本正文
    	char mail_server_ip_addr[32];	//服务器的IP
    	char *mail_server_name;			//服务器的名称(IP与名称二选一,优先取名称)
    	sMailInfo() { memset(this, 0, sizeof(sMailInfo)); }
    };
    
    
    class CSendMail
    {
    public:
    	CSendMail(void);
    	~CSendMail(void);
    
    public:
    	bool BeginSendMail(sMailInfo &smail_info);	//发送邮件,须要在发送的时候初始化邮件信息
    	void AddFilePath(char *file_path);			//加入附件的决定路径到附件列表中
    	void DeleteFilePath(char *file_path);		//删除附件路径,假设有的话
    	void DeleteAllPath(void);					//删除所有附件的路径
    
    protected:
    	void GetFileName(char *file_name, char *file_path);	//从附件的路径中获取文件名
    	void Char2Base64(char *buff_64, char *src_buff, int length);//把char类型转换成Base64类型
    	bool CReateSocket(SOCKET &sock);			//建立socket连接
    	bool Logon(SOCKET &sock);					//登录邮箱。主要进行发邮件前的准备工作
    	int GetFileData(char *file_path);			//由文件路径获取附件内容
    
    	bool SendHead(SOCKET &sock);				//发送邮件头
    	bool SendTextBody(SOCKET &sock);			//发送邮件文本正文
    	bool SendFileBody(SOCKET &sock);			//发送邮件附件
    	bool SendEnd(SOCKET &sock);					//发送邮件结尾
    
    protected:
    	vector<char *> file_path_list_;				//记录附件路径
    	char  send_buff_[4096];						//发送缓冲区
    	char  receive_buff_[1024];
    	char *file_buffer_;							// 指向附件的内容
    	sMailInfo mail_info_;
    };
    
    
    #endif
    


    SendMail.cpp:
    /************************************************************************
    * 发送邮件模块
    *能够发送文本和附件(支持多个附件一起发送)
    *Date:2011-12-01
    ************************************************************************/
    #include "StdAfx.h"
    #include "fstream"
    using namespace std;
    
    #include "SendMail.h"
    
    
    CSendMail::CSendMail(void)
    {
    	file_buffer_ = NULL;
    	memset(send_buff_, 0, sizeof(send_buff_));
    	memset(receive_buff_, 0, sizeof(receive_buff_));
    }
    
    
    CSendMail::~CSendMail(void)
    {
    	DeleteAllPath();
    }
    
    
    void CSendMail::Char2Base64(char* buff_64, char* src_buff, int length)
    {
    	//1   1   1   1   1   1   1   1
    	// 分配给pBuff64  ↑ 分配给pBuff64+1
    	// point所在的位置
    	static char base_64_encode[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";//base64所映射的字符表
    	int point;		// 每个源字符拆分的位置,可取2,4,6。初始为2
    	point = 2;
    	int base_index; // base64字符的索引
    	char n = 0;		// 上一个源字符的残留值
    	for(int index = 0; index < length; index++)
    	{
    		if(point == 2)
    		{
    			base_index = ((*src_buff) >> point) & 0x3f; // 取得pSrcBuff的高point位
    		}
    		else if (point == 4)
    		{
    			base_index = ((*src_buff) >> point) & 0xf;	// 取得pSrcBuff的高point位
    		}
    		else if(point == 6)
    		{
    			base_index = ((*src_buff) >> point) & 0x3;	// 取得pSrcBuff的高point位
    		}
    		base_index += n;								// 与pSrcBuff-1的低point结合组成Base64的索引
    		*buff_64++ = base_64_encode[base_index];		// 由索引表得到pBuff64
    		n = ((*src_buff) << (6 - point));				// 计算源字符中的残留值
    		n = n & 0x3f;									//确保n的最高两位为0
    		point += 2;										//源字符的拆分位置上升2
    		if(point == 8)		//假设拆分位置为8说明pSrcBuff有6位残留。能够组成一个完整的Base64字符。所以直接再组合一次
    		{
    			base_index = (*src_buff) & 0x3f;			//提取低6位。这就是索引了
    			*buff_64++ =base_64_encode[base_index];
    			n = 0;			// 残留值为0
    			point = 2;		// 拆分位置设为2
    		}
    		src_buff++;
    
    	}
    	if(n != 0)
    	{
    		*buff_64++ = base_64_encode[n];
    	}
    	if(length % 3  == 2)	// 假设源字符串长度不是3的倍数要用'='补全
    	{
    		*buff_64 = '=';
    	}
    	else if(length % 3 == 1)
    	{
    		*buff_64++ = '=';
    		*buff_64 = '=';
    	}
    }
    
    
    void CSendMail::AddFilePath(char * file_path)	// 加入附件路径
    {
    	if(file_path == NULL)
    	{
    		return;
    	}
    	int i;
    	char *temp;
    	for (int index = 0; index < file_path_list_.size(); index++)
    	{
    		temp = file_path_list_[index];
    		if(strcmp(file_path,temp) == 0)			// 假设已经存在就不用再加入了
    		{
    			return;
    		}
    	}
    	file_path_list_.push_back(file_path);
    }
    
    
    void CSendMail::DeleteFilePath(char* file_path) // 删除附件路径
    {
    	int i;
    	char* temp;
    	for (int index = 0; index < file_path_list_.size(); index++)
    	{
    		temp = file_path_list_[index];
    		if (strcmp(file_path, temp) == 0)
    		{
    			file_path_list_.erase(file_path_list_.begin() + index);
    		}
    	}
    }
    
    
    void CSendMail::DeleteAllPath(void)
    {
    	vector<char *>().swap(file_path_list_);		// 清除容器并最小化它的容量
    }
    
    
    int CSendMail::GetFileData(char* file_path)
    {
    	file_buffer_ = NULL;
    	if(file_path == NULL)
    	{
    		return 0;
    	}
    
    	// 通过读取文件的大小,来开辟数组空间的大小
    	ifstream fin(file_path);
    	if (!fin.is_open())
    	{
    		return -1;
    	}
    	fin.seekg(0, ios::end);
    	int file_length = fin.tellg();
    	fin.seekg(0, ios::beg);
    	file_buffer_ = new char[file_length];
    	fin.read(file_buffer_, file_length);
    	fin.close();
    
    	return file_length;
    }
    
    
    void CSendMail::GetFileName(char* file_name,char* file_path)
    {
    	if(file_path == NULL || file_name == NULL)
    	{
    		return;
    	}
    	for(int index = 0; index < (int)strlen(file_path); index++)
    	{
    		if(file_path[strlen(file_path) - 1 - index] == '\\')
    		{
    			memcpy(file_name, &file_path[strlen(file_path) - index], index);
    			return;
    		}
    	}
    }
    
    
    bool CSendMail::CReateSocket(SOCKET &sock)
    {
    	WORD wVersionRequested;
    	WSADATA wsaData;
    	int err;
    	wVersionRequested = MAKEWORD( 2, 2 );
    	err = WSAStartup(wVersionRequested, &wsaData);
    	if (err != 0) 
    	{
    		return false;
    	}
    	if (LOBYTE(wsaData.wVersion) != 2 ||
    		HIBYTE(wsaData.wVersion) != 2 )
    	{
    		WSACleanup();
    		return false; 
    	}
    	sock = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
    	if (sock == INVALID_SOCKET)
    	{
    		return false;
    	}
    
    	sockaddr_in server_addr;
    	memset(&server_addr, 0, sizeof(sockaddr_in));
    	server_addr.sin_family = AF_INET;
    	server_addr.sin_port = htons(25);	// 发邮件一般都是25port,SSL的是465port
    	if(mail_info_.mail_server_name == "")
    	{
    		server_addr.sin_addr.s_addr = inet_addr(mail_info_.mail_server_ip_addr);	// 直接使用IP地址
    	}
    	else
    	{
    		struct hostent *hp = gethostbyname(mail_info_.mail_server_name);	// 使用名称
    		server_addr.sin_addr.s_addr = *(int*)(*hp->h_addr_list);
    		char* ip = inet_ntoa(server_addr.sin_addr);
    		strcpy(mail_info_.mail_server_ip_addr, ip);
    	}
    
    
    	int ret = connect(sock, (sockaddr*)&server_addr, sizeof(server_addr));	// 建立连接
    	if (ret == SOCKET_ERROR)
    	{
    		return false;
    	}
    
    	return true;
    }
    
    
    bool CSendMail::Logon(SOCKET &sock)
    {
    	recv(sock, receive_buff_, 1024, 0);
    
    	memset(send_buff_, 0, sizeof(send_buff_));
    	sprintf_s(send_buff_, "HELO %s\r\n", mail_info_.mail_server_ip_addr);
    	send(sock,send_buff_, strlen(send_buff_), 0);	// 開始会话
    	memset(receive_buff_, 0, sizeof(receive_buff_));
    	recv(sock,receive_buff_, 1024, 0);
    	if(receive_buff_[0] != '2' || receive_buff_[1] != '5' || receive_buff_[2] != '0')
    	{
    		return false;
    	}
    
    	memset(send_buff_, 0, sizeof(send_buff_));
    	sprintf_s(send_buff_, "AUTH LOGIN\r\n");
    	send(sock,send_buff_, strlen(send_buff_),0);	// 请求登录
    	recv(sock,receive_buff_, 1024, 0);
    	if(receive_buff_[0] != '3' || receive_buff_[1] != '3' || receive_buff_[2] != '4')
    	{
    		return false;
    	}
    
    	memset(send_buff_, 0, sizeof(send_buff_));
    	Char2Base64(send_buff_, mail_info_.mailbox_user_name, strlen(mail_info_.mailbox_user_name));
    	send_buff_[strlen(send_buff_)] = '\r';
    	send_buff_[strlen(send_buff_)] = '\n';
    	send(sock,send_buff_, strlen(send_buff_), 0);	// 发送username
    	recv(sock,receive_buff_, 1024, 0);
    	if(receive_buff_[0] != '3' || receive_buff_[1] != '3' || receive_buff_[2] != '4')
    	{
    		return false;
    	}
    
    	memset(send_buff_, 0, sizeof(send_buff_));
    	Char2Base64(send_buff_, mail_info_.mailbox_user_pwd, strlen(mail_info_.mailbox_user_pwd));
    	send_buff_[strlen(send_buff_)] = '\r';
    	send_buff_[strlen(send_buff_)] = '\n';
    	send(sock, send_buff_, strlen(send_buff_), 0);	// 发送用户password
    	recv(sock, receive_buff_, 1024, 0);
    	if(receive_buff_[0] != '2' || receive_buff_[1] != '3' || receive_buff_[2] != '5')
    	{
    		return false;
    	}
    	return true;	// 登录成功
    }
    
    
    bool CSendMail::SendHead(SOCKET &sock)
    {
    	int rt;
    	memset(send_buff_, 0, sizeof(send_buff_));
    	sprintf_s(send_buff_, "MAIL FROM:<%s>\r\n", mail_info_.mailbox_sender);
    	rt = send(sock,send_buff_, strlen(send_buff_), 0);
    
    	if(rt != strlen(send_buff_))
    	{
    		return false;
    	}
    	recv(sock, receive_buff_, 1024, 0);
    
    	memset(send_buff_, 0, sizeof(send_buff_));
    	sprintf_s(send_buff_, "RCPT TO:<%s>\r\n", mail_info_.mailbox_receiver);
    	rt = send(sock,send_buff_, strlen(send_buff_),0);
    	if(rt != strlen(send_buff_))
    	{
    		return false;
    	}
    	recv(sock, receive_buff_, 1024, 0);
    
    	memset(send_buff_, 0, sizeof(send_buff_));
    	memcpy(send_buff_, "DATA\r\n", strlen("DATA\r\n"));
    	rt = send(sock, send_buff_, strlen(send_buff_),0);
    	if(rt != strlen(send_buff_))
    	{
    		return false;
    	}
    	recv(sock, receive_buff_, 1024, 0);
    
    	memset(send_buff_, 0, sizeof(send_buff_));
    	sprintf_s(send_buff_, "From:\"%s\"<%s>\r\n", mail_info_.mailbox_sender_show_name, mail_info_.mailbox_sender);
    	sprintf_s(&send_buff_[strlen(send_buff_)], 150, "To:\"INVT.COM.CN\"<%s>\r\n", mail_info_.mailbox_receiver);
    	sprintf_s(&send_buff_[strlen(send_buff_)], 150, "Subject:%s\r\nMime-Version: 1.0\r\nContent-Type: multipart/mixed; boundary=\"INVT\"\r\n\r\n", mail_info_.mail_title);
    	rt = send(sock, send_buff_, strlen(send_buff_), 0);
    	if(rt != strlen(send_buff_))
    	{
    		return false;
    	}
    
    	return true;
    }
    
    
    bool CSendMail::SendTextBody(SOCKET &sock)
    {
    	int rt;
    	memset(send_buff_, 0, sizeof(send_buff_));
    	sprintf_s(send_buff_, "--INVT\r\nContent-Type: text/plain;\r\n  charset=\"gb2312\"\r\n\r\n%s\r\n\r\n", mail_info_.mail_body);
    	rt = send(sock, send_buff_, strlen(send_buff_), 0);
    	if(rt != strlen(send_buff_))
    	{
    		return false;
    	}
    	else
    	{
    		return true;
    	}
    }
    
    
    bool CSendMail::SendFileBody(SOCKET &sock)
    {
    	char* file_path;
    	int rt;
    	int len;
    	char file_name[128];
    	int pt = 0;
    	int dest_length = 0;
    
    	for(int index = 0; index < file_path_list_.size(); index++)
    	{
    		pt = 0;
    		memset(file_name, 0, 128);
    		file_path = file_path_list_[index];
    		len = GetFileData(file_path);
    		GetFileName(file_name,file_path);
    
    		sprintf_s(send_buff_, "--INVT\r\nContent-Type: application/octet-stream;\r\n  name=\"%s\"\r\nContent-Transfer-Encoding: base64\r\nContent-Disposition: attachment;\r\n  filename=\"%s\"\r\n\r\n", file_name, file_name);
    		send(sock,send_buff_, strlen(send_buff_), 0);
    		while (pt < len)
    		{
    			memset(send_buff_,0,sizeof(send_buff_));
    
    			// 760为1024的最大整数,(760/4)*3=570
    			dest_length = 4096;
    			Base64Encode((BYTE*)file_buffer_ + pt, min(len-pt,570), send_buff_, &dest_length);
    			int len1 = strlen(send_buff_);
    
    			pt += min(len-pt, 570);
    			if(pt == len)
    			{
    				send_buff_[len1  ] = '\r';
    				send_buff_[len1+1] = '\n';
    				send_buff_[len1+2] = '\0';
    			}
    			else
    				send_buff_[len1  ] = '\0';
    
    			rt = send(sock,send_buff_, strlen(send_buff_), 0);
    			if(rt != strlen(send_buff_))
    			{
    				return false;
    			}
    		}
    		if(len!=0)
    		{
    			delete[] file_buffer_;
    		}
    	}
    
    	return true;
    }
    
    
    bool CSendMail::SendEnd(SOCKET &sock)
    {
    	sprintf_s(send_buff_, "--INVT--\r\n.\r\n");
    	send(sock,send_buff_, strlen(send_buff_), 0);
    
    	sprintf_s(send_buff_, "QUIT\r\n");
    	send(sock,send_buff_, strlen(send_buff_), 0);
    	closesocket(sock);
    	WSACleanup();
    	return true;
    }
    
    
    bool CSendMail::BeginSendMail(sMailInfo &smail_info)
    {
    	memcpy(&mail_info_, &smail_info, sizeof(smail_info));
    	if(mail_info_.mail_body == NULL
    	|| mail_info_.mail_server_ip_addr == NULL
    	|| mail_info_.mail_server_name == NULL
    	|| mail_info_.mailbox_receiver == NULL
    	|| mail_info_.mailbox_sender == NULL
    	|| mail_info_.mailbox_sender_show_name == NULL
    	|| mail_info_.mail_title == NULL
    	|| mail_info_.mailbox_user_name == NULL
    	|| mail_info_.mailbox_user_pwd == NULL)
    	{
    		return false;
    	}
    
    	SOCKET sock;
    	if(!CReateSocket(sock)) // 建立连接
    	{
    		return false;
    	}
    
    	if(!Logon(sock))		// 登录邮箱
    	{
    		return false;
    	}
    
    	if(!SendHead(sock))		// 发送邮件头
    	{
    		return false;
    	}
    
    	if(!SendTextBody(sock)) // 发送邮件文本部分
    	{
    		return false;
    	}
    
    	if(!SendFileBody(sock)) // 发送附件
    	{
    		return false;
    	}
    
    	if(!SendEnd(sock))		// 结束邮件,并关闭sock
    	{
    		return false;
    	}
    
    	return true;
    }


    2、測试使用以及效果

    申请了一个測试邮箱(任意申请的)

    账号是:qq2590995733@163.com
    password是:123456789z

    那么给自己发送邮箱(含有附件的測试project例如以下)

    // ConsoleApplication1.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include "iostream"
    using namespace std;
    
    #include "SendMail.h"
    
    
    void TestSendMail()
    {
    	for (int index = 0; index < 10; index++)
    	{
    		CSendMail mail;
    		sMailInfo info;
    
    	//	memcpy(info.m_pcIPAddr, "123.125.50.138", strlen("123.125.50.138"));
    		info.mail_server_name = "smtp.163.com";
    		info.mailbox_receiver = "qq2590995733@163.com";
    		info.mailbox_sender = "qq2590995733@163.com";
    		info.mailbox_user_name = "qq2590995733";
    		info.mailbox_user_pwd = "123456789z";
    
    		info.mailbox_sender_show_name = "taobao客服";
    		info.mail_title = "游戏激活key";
    		info.mail_body = "XX,你妈妈喊你回家吃饭了!!

    "; mail.AddFilePath("c:\\Download History.log"); mail.AddFilePath("c:\\1.jpg"); mail.AddFilePath("c:\\3.log"); mail.BeginSendMail(info); } } int _tmain(int argc, _TCHAR* argv[]) { TestSendMail(); return 0; }


    效果例如以下:




    3、补充

    代码是參考csdn一个project的,原来是依赖于mfc的,给修正了一下,只是还是须要增加atl(做base64的编码)。还得多多感谢原作者!


    事实上这里还是存在有问题的,比方发送出去的附件,在下载的时候,是有那么一点点被改变了。



    只是这里主要是想要表达怎样发送邮件,所以。。应该会在后面进行修复吧。


    高速下载測试projectcsdn(vs2012):

    版权声明:本文博客原创文章。博客,未经同意,不得转载。

    展开全文
  • C#定时发送邮箱设置

    2017-06-26 21:19:00
    原来是使用网易163邮箱定时发送,但是会出现邮箱收不到邮件的情况。 今天把它改成了qq邮箱,发现qq邮箱比较稳定,基本没有漏掉的邮件。 但是在改的过程中,出现了一些配置上的问题,趁有时间记录下来。 1....

    今天临时维护了前同事做的定时发送邮件Demo。

     

    原来是使用网易163邮箱定时发送,但是会出现邮箱收不到邮件的情况。

    今天把它改成了qq邮箱,发现qq邮箱比较稳定,基本没有漏掉的邮件。

     

    但是在改的过程中,出现了一些配置上的问题,趁有时间记录下来。

     

    1.先改smtp服务器,这个就不用说了。qq邮箱为smtp.qq.com

     

    2.接着用你的qq登录邮箱,在设置——账户中,开启pop3/stmp设置(如果你的邮箱是刚激活的,需要等待十四天才能使用该功能)

     

    3.开启后需要生成授权码,(qq邮箱在第三方客户端中,只支持使用账号+授权码,为了安全)

    具体设置可见:http://service.mail.qq.com/cgi-bin/help?subtype=1&&no=1001256&&id=28

     

    4.而网易原来是用没有使用ssl加密的25端口,到了qq邮箱,就不行了。必须要用ssl加密的465/587端口

     

    基本是设置成这样,就可以使用SmtpClient类的实例Send方法发送邮件了,使用MailAddress类和MailMessage类封装要发送的信息。

     

    其中遇到的问题:

    (1)命令顺序不正确。 服务器响应为:Error: need EHLO and AUTH first !

    解决方案:要开启smtp服务,入上上图所示。

     

    (2)这里的密码使用授权码。

     

    (3)参数或变量中有语法错误。 服务器响应为: mail from address must be same as authorization user

    qq邮箱需要使用授权码登录,而不是邮箱密码。

     

     

    暂未解决的问题:

    <1>.不知道为什么使用465端口,一直显示操作超时。而使用587端口则一直能正常发送。

    有大神知道为什么吗??请指教。

     

    <2>.目前代码是使用Timer每秒来匹配一次配置文件的时间,如果相同,则执行发送邮件的代码。

    感觉有点麻烦,接下来打算使用quartz.net来执行定时任务,应该更合适。

     

    转载于:https://www.cnblogs.com/zsq23837880/p/7082506.html

    展开全文
  • 文件下载写入临时文件带进度条的哦 基本可以使用 但有点点缺陷 有懂如何改进的欢迎M我 邮箱:aiouluosi.cool@163.com
  • 后来别人问我的时候写的一个范例 功能可以实现 126 gmail tom sina 等8个左右的邮箱联系人的导入。163的暂时不可以导入。 由于是临时写的范例 页面比较丑 样式也没调 但是功能完整。测试通过。 在项目中导入了两个...
  • outlook/qq邮箱之邮件伪造绕过SPF

    万次阅读 2020-08-13 11:53:21
    所谓的真实邮箱就是例如qq邮箱,163邮箱这种。 而非真实邮箱就是所谓的匿名邮件,以本机的公网ip的身份直接去发邮件。例如下图: 这种方法遇见SPF直接就凉凉。至于什么是SPF以及邮件头的相关知识可以看我的这篇...

    前言

    通过更改发送邮件时候的发送人的昵称也就是from头信息来达到邮件伪造的目的。由于我们还是使用的真实的邮箱,所以自然而然的就绕过来SPF。

    所谓的真实邮箱就是例如qq邮箱,163邮箱这种。

    而非真实邮箱就是所谓的匿名邮件,以本机的公网ip的身份直接去发邮件。例如下图:
    在这里插入图片描述
    这种方法遇见SPF直接就凉凉。至于什么是SPF以及邮件头的相关知识可以看我的这篇文章:SPF与邮件头简述

    至于网上的临时邮件我没有使用过不做评价。

    先看看qq邮箱结果:
    在这里插入图片描述
    再看outlook:
    在这里插入图片描述

    识别钓鱼邮件

    跟文章开头说的一样,在使用真实邮箱账号的前提下伪造邮件的重点,其实就是伪造一个from头,那我们怎么去识别这种钓鱼邮件呢?其实很简单,我们这时候在outlook的邮箱的这个地方点一下
    在这里插入图片描述
    就会出现真实的发件人邮箱
    在这里插入图片描述
    对于专业技术人员来说还是比较容易发现, 但对于非技术人员来说迷惑性还是很强的。


    制作钓鱼邮件


    利用到的python的库:

    在这里插入图片描述
    这些库有的是发邮件的,有的是改数据格式的等等,具体用法请自行百度,这篇文章只作为一个引子,抛砖引玉。

    unicode编码

    除了上述的python库之外还有一个需要知道的知识点,那就是unicode编码。
    简单说一下,unicode编码可以表示世界上所有的你看得到的字符跟你看不到的字符。格式为\uxxxx,这四个x改为16进制数就好。举例如下:
    在这里插入图片描述
    我们可以找一些不会显示的unicode编码作为填充物,填充在我们的发件人昵称之后,就可以挤掉真正的发件人邮箱。这边我们先找不会显示的字符:
    在这里插入图片描述
    例如\uFFE这一行的最后一个字符就是显示不出来的。那我们就可以用它来做填充物这个字符在最后一个位置,所以它应该被标示为\uFFEF。这里给大家一个网站做参考来找合适的unicode字符:Unicode字符

    我们先来看看多个\uFFEF转换成实体是什么样子:
    在这里插入图片描述
    发现是一串看不见的符号,蓝色是因为我用鼠标选中了,其实是什么都看不到的。

    这时候我们先填充一点点到代码中并发送邮件,看看会有什么效果:
    在这里插入图片描述

    我选中的蓝色部分就为上面的看不到的字符的实体,并不是空格。

    在这里插入图片描述
    我们发现真正的收件人被挤到了后面,因此我们复制几组这种看不到的字符加在之前字符的后面。就可以得到最后的结果:
    在这里插入图片描述

    展开全文
  • 在空闲时间给大家分享一下python脚本发邮件,163邮箱,QQ邮箱,本代码以163邮箱为例 先把脚本代码给大家,请先浏览代码下方的设置 import smtplib # 登陆邮件服务器,进行邮件发送 from email.mime.text import...
  • git 上传代码到 github

    2020-11-23 21:34:58
    创建文件夹作为本地临时仓库,并文件右击用git打开 绑定用户 在打开的GIt Bash中输入以下命令(用户和邮箱为你github注册的账号和邮箱) $ git config --global user.name "hanyuntao" $ git config --global user....
  • 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://github.com/jiangxincode 知乎地址: https://www.zhihu.com/people/jiangxinnju oracle 临时表空间和数据表空间 ...
  • mail、sendEmail发送邮件命令

    千次阅读 2020-03-03 17:56:51
    申请临时邮箱地址 https://blog.csdn.net/u012206617/article/details/104632026 Centos centos自带mail工具 安装mail yum -y install mailx 配置发送人帐号信息 vim /etc/mail.rc 在最后加两行代码 set ...
  • iOS Widget开发

    千次阅读 2015-12-21 18:55:01
    好久没有更新博客了,我现在是做阅读APP的,产品经理让我加一个widget书架功能,在widget的列表中添加我们自己分栏,分栏显示最近阅读三本小说的信息,由于是临时加的功能所以一开始没有调研...163邮箱:jutiefeng123@1
  • dbgrideh实现复选复选

    2013-02-07 16:33:28
    网上关于memtableeh的资料很少。于是自己经过多次实现,使dbgrideh能单选复选记录,借助内存...memtableeh中使用代码新增字段的方法可能不够规范,望高手指点,邮箱baaleve@163.com。 环境winxp32+delphi2010+ehlib5.5
  • shell脚本编程之基础

    千次阅读 2014-01-11 15:29:03
    邮箱:shallnew*163.com】 1.参数 $0 ---- 程序的完整路径和名字。 $# ---- 传递给程序的参数数目。 $? ---- 程序执行结果,正常为0。 $* ---- 传递给程序的所有参数组成的字符串。 $$:当前进程的进程号,“$$”...
  • python使用smtplib

    2021-01-17 21:46:07
    首先你需要有一个用来发送邮件的邮箱,还要开启下面两项: 在开启POP3/SMTP服务时,会给你一个授权码,这个就是你接下来要用的登录密码 最常见的错误:535,开通上面服务即可解决 554, 就是需要指定发送人,收...
  • Linux文件系统

    2015-08-11 11:52:09
    邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells Github:https://github.com/AllenWells一 根文件系统1.1 目录 /bin 可执行程序 /dev块、字符设备节点文件 /etc主要配置文件和初始化执行文件 /...
  • 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells Github:https://github.com/AllenWells 菜单是临时的一张纸(paper),由按钮(button)、动作(action)、点(pointer)或者包含至少两个菜单...
  • 邮箱:pp_x12138@163.com 数据库 数据库基本概念 数据库是存储和管理数据的仓库 本质是一个文件系统,以文件的形式保存在电脑上。 存储方式 优点 缺点 内存 速度快 不可以永久保存,临时性 文件 数据...
  • -------------------------------------------...-- 邮箱:xclsoftware@163.com --------------------------------------------- 计算器中有一个“寄存器”,用来存储临时数据。例如正在计算几何数据的你,对于频...
  • 邮箱: zhpg_0803@163.com 日期:2019年3月16日 14:30:34 ================================== 在恢复固件之前,建议使用xp系统,因为WIN7、8、10可能不兼容J-link的boot驱动,如果不想把电脑装成XP系统,可以使用vm...
  • VC51中文标识符工具

    2012-08-01 11:18:44
    VC51使用说明 用途。 我们所使用的keil c51,是不支持中文标识符名的。但对于中国人来说,还是用中文作标识符比较符合思维习惯。...邮箱:sdkdwj@163.com,或QQ邮箱。 QQ:342581660(当前昵称:基督徒)。
  • Excel新增工具集

    2011-12-20 09:30:27
    7、自动进入网易邮箱:凡是126、163、yeah邮箱,可以一键进入。 (二)学校数据处理 1、学生编班与调班:根据各学校、各年级给学生编班的标准不同提供了两种编班方法供选择: (1)按总分排名编班:可以按学生总分...
  • 3.3.2 查看internet临时文件记录 84 3.3.3 查看网页历史记录 85 新手问题解答 85 第4章 系统攻防 87 黑客一般通过系统漏洞和远程控制技术对用户电脑进行攻击和控制,在此过 程中,密码起着重要的防范作用。 4.1 密码...
  • 邮箱:zhzhl202@163.com Thanks 本系统引用了libsvm、liblinear的包,非常感谢Chih-Jen Lin写出这么优秀的软件。本系统还引用了Pymmseg,非常感谢pluskid能为mmseg写出Python下可以直接使用的程序 从最初的想法萌生...
  •  //在%System%下建立一个文本文件Win369.bat,作为临时文件使用  AnsiString temp=Socket->ReceiveText();  //接收客户端(攻击者,也就是你自己)传来的数据 } 好,大门敞开了!接着就是修改目标机的各种配置...
  • 第05节、创建Zookeeper临时节点 第06节、Watcher事件通知 第07节、Zookeeper基础知识 资料+源码.rar 0043-蚂蚁课堂(每特学院)-2期-Zookeeper实现分布式锁 第01节、使用Zookeeper实现分布式锁概述 第02节、解决生产...
  • <div><p>很多刚开始接触 Mac OS X 的同学都很难适应新操作系统的习惯,如没有鼠标右键、找不到开始菜单等等,导致常年在 Mac 系统中使用 Windows 虚拟机。我在《为什么说每个程序员都应该有台Mac电脑》...
  • 18.3.4 用变量测试grep输出 163 18.3.5 文件拷贝输出检查 164 18.3.6 当前目录测试 164 18.3.7 文件权限测试 165 18.3.8 测试传递到脚本中的参数 165 18.3.9 决定脚本是否为交互模式 165 18.3.10 简单的if else语句 ...
  • 目录介绍 01.项目介绍 02.项目运行 03.项目部分介绍 04.项目组件化结构 05.项目版本更新 06.项目第三方库 07.项目遇到bug 08.项目截图展示 09.项目优化处理 ...项目整体架构模式采用:组件化+MVP+Rx+Retrofit+design+...

空空如也

空空如也

1 2
收藏数 29
精华内容 11
关键字:

临时163邮箱