smtp发送带附件的邮件(直接将string类型结果保存为附件)

该方式直接保存为HTML文件,也可以是文本文件,其它格式效果不是很好
    MailMessage mmsg = new MailMessage();
    mmsg.Subject = "邮件标题";
    mmsg.Body = "邮件内容";
    mmsg.To.Add("accept@qq.com");//接收邮箱
    byte[] bytes = System.Text.Encoding.Default.GetBytes
        (@"<table><tr><td width=150>1234567891234567
        </td><td width=80>12345678</td></tr></table>");
    MemoryStream ms = new MemoryStream(bytes);
    ContentType ct = new ContentType();
    //附件文件类型
    ct.MediaType = MediaTypeNames.Text.Html;
    //附件名称,可以是其它后缀名
    ct.Name = "附件名称" + DateTime.Now.ToString() + ".html";
    mmsg.Attachments.Add(new Attachment(ms, ct));
    //SMTP简单邮件协议
    System.Net.Mail.SmtpClient sc
        = new System.Net.Mail.SmtpClient();
    sc.Host = "127.0.0.1";//主机地址
    sc.Port = 25;//端口
    //发送邮箱账号和密码
    sc.Credentials =
        new System.Net.NetworkCredential("account", "password");
    //发送邮箱
    mmsg.From = new MailAddress("account@qq.com");
    sc.Send(mmsg);
    //释放流资源
    ms.Close();
    ms.Dispose();
 

简单的控制台程序 主要是为了学习之用 本人花时间编写。为了和大家分享和学习用,如有什么错误或认为本人哪里处理不当 请和我联系~~ 内容: main.cpp 就一个cpp文件 //1.首先需要连接邮件服务器 这里用socket 邮件服务器端口 25 //2.现在就是和服务器对话了 //3.结束 #include #include #include #include #include #include #include #include #include #include #include #include #pragma comment(lib,"WS2_32.lib") using namespace std; /*加附件的版本*/ //base64编码 string Base64Encode(LPCTSTR lpszSrc); //base64解码 string Base64Decode(LPCTSTR lpszSrc); //读文件数据 bool ReadFromFile(const char* pszFilename,string &filename); unsigned char* m_pbText; int main() { //1.首先需要连接邮件服务器 这里用socket 邮件服务器端口 25 WSADATA Wsa; //进行WINSOCK的设置 WSAStartup(0x0101,&Wsa); SOCKET s = socket(AF_INET,SOCK_STREAM,IPPROTO_IP); SOCKADDR_IN sin; LPHOSTENT lphost = gethostbyname("smtp.163.com");//这里是用网易的邮件服务器 也可以修改 if(lphost) sin.sin_addr.s_addr = ((LPIN_ADDR)lphost->h_addr)->s_addr; else { printf("%s\n","获取地址失败"); return 1; } sin.sin_family = AF_INET; //注意邮件服务器的侦听端口 25 sin.sin_port = htons(IPPORT_SMTP); //连接服务器 if(connect(s,(LPSOCKADDR)&sin,sizeof(sin))==SOCKET_ERROR) { printf("%s\n","连接错误"); return 1; } printf("%s\n","连接成功"); //接收服务器初次回应 char buff[1024]; memset(buff,0,sizeof(buff)); recv(s,buff,sizeof(buff),0); printf("服务说:%s\n",buff); /////上面已经完成连接了///// string szLine="\r\n";//相当于你按下回车 //2.现在就是和服务器对话了 //问候服务器 string szHelo = "HELO smtp.163.com" + szLine; printf("我说:%s\n",szHelo.c_str()); send(s,szHelo.c_str(),szHelo.length(),0); memset(buff,0,sizeof(buff)); recv(s,buff,sizeof(buff),0); printf("服务说:%s\n",buff); //请求验证用户密码(需要编码) string szAL = "auth login" + szLine; //发送验证命令 printf("我说:%s\n",szAL.c_str()); send(s,szAL.c_str(),szAL.length(),0); memset(buff,0,sizeof(buff)); recv(s,buff,sizeof(buff),0); // printf("服务说:%s\n",buff); //服务器会回答说 可以输入帐号 //发送帐号 string szUser; .... 具体自己下载运行即可 装个VC6.0 即可
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值