Java发送mail和C#发送mail
Java发送mail
阿里云邮箱,配置公司邮箱服务器,邮箱地址,授权码(运维同事提供,听说阿里云邮箱的授权码和密码一样),端口465,测试能发送。
/**
* 发送简单的文本邮件
*/
public static boolean sendTextEmail(String to, String title, String msg) throws Exception {
if (to.trim().equals("")) {
return false;
}
try {
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(USERNAME, PERSONAL, DEFAULT_ENCODING));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to.trim()));
message.setSubject(title);
message.setText(msg);
message.setSentDate(new Date());
message.saveChanges();
Transport trans = session.getTransport("smtp");
trans.send(message);
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
C#发送邮箱
跟上面配一样的公司邮箱服务器,邮箱地址,授权码(运维同事提供,听说阿里云邮箱的授权码和密码一样),端口465,测试发送失败。
改成自己的QQ邮箱地址及服务器,授权码,端口仍是465,依然失败,网上查了说是net.mail不支持ssl加密发送;
再次尝试,改成Web.mail方式发送,QQ邮箱smtpusessl=true,端口465,成功,代码如下;smtpusessl=false,端口25,也成功,这个代码就放了,就改两处。
//发件人
const string sendAddress = "xxxx@qq.com";
//发件人密码
const string sendPassword = "xxxx";
//收件人
const string receiveAddress = "xxxx@xxxxx.com";
//服务器
const string host = "smtp.qq.com"; System.Web.Mail.MailMessage mail = new System.Web.Mail.MailMessage();
try
{
mail.From = sendAddress;
mail.To = receiveAddress;
mail.Subject = "测试";
mail.BodyFormat = System.Web.Mail.MailFormat.Html;
mail.Body = "dxd发送的测试邮件" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1"); //basic authentication
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", sendAddress); //set your username here 发件人邮箱
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", sendPassword); //set your password here 发件人邮箱密码
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", 465);//发送端口号
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpusessl", "true");//是否启用ssl //需要引用组件System.Web
System.Web.Mail.SmtpMail.SmtpServer = host;
System.Web.Mail.SmtpMail.Send(mail); Console.WriteLine("发送邮件成功");
}
catch (Exception ex)
{
var exg = ex.InnerException ?? ex;
string msg = exg.ToString();
Console.WriteLine(msg);
}
改成公司的邮箱配置,smtpusessl=false,端口25,也成功;smtpusessl=true,端口465,失败,很费解;
Web.mail,公司的邮箱配置,smtpusessl=false,端口25,不是到阿里云服务器,测试,发送失败,网上查了说是阿里云25端口被禁,可以申请解禁,流程好像比较麻烦。
改成465,仍然失败,修改smtpusessl=true,仍然失败。
正当一筹莫展时,看到之前net.mail发送端口配的是587,尝试改成net,mail发送,仍然用公司的邮箱配置,EnableSsl = false,端口改成587,居然成功了;
再次尝试,把EnableSsl = true,测试失败,提示:根据验证过程,远程证书无效,网上查了:http://t.zoukankan.com/yifengjianbai-p-6128396.html,
说要加一段代码:
ServicePointManager.ServerCertificateValidationCallback =
delegate(Object obj, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) { return true; };
加上再次测试,成功,完全体代码如下:
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Net;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks; namespace RNCloud
{
public class MailHelper
{
private static string host = ConfigurationManager.AppSettings["email:host"];
private static string port = ConfigurationManager.AppSettings["email:port"];
private static string username = ConfigurationManager.AppSettings["email:username"] ;
private static string password = ConfigurationManager.AppSettings["email:password"];
#region Net.Email发送
/// <summary>
/// 发送电子邮件邮件
/// </summary>
/// <param name="to">接收电子邮件地址</param>
/// <param name="bcc">暗送电子邮件地址,可为空</param>
/// <param name="cc">抄送电子邮件地址,可为空</param>
/// <param name="subject">邮件主题</param>
/// <param name="body">邮件正文</param>
/// <param name="mailatta">附件</param>
/// <param name="bodyType">邮件正文格式</param>
public static void SendNetMail(string[] to, string[] bcc, string[] cc, string subject, string body, System.Net.Mail.Attachment mailatta, string bodyType)
{
System.Net.Mail.SmtpClient smtpClient = new System.Net.Mail.SmtpClient();
smtpClient.EnableSsl = true;
smtpClient.UseDefaultCredentials = false;
smtpClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;//指定电子邮件发送方式
smtpClient.Host = host; //指定SMTP服务器
smtpClient.Port = port.ToInt();//指定SMTP端口
smtpClient.Credentials = new System.Net.NetworkCredential(username, password);//用户名和密码 System.Net.Mail.MailMessage m_Mail = new System.Net.Mail.MailMessage();
//邮件编码
m_Mail.BodyEncoding = System.Text.Encoding.UTF8;
//设置发件人
System.Net.Mail.MailAddress fromAddr = new System.Net.Mail.MailAddress(username);
m_Mail.From = fromAddr;
//收件人
if (to != null)
foreach (string s_to in to)
{
m_Mail.To.Add(s_to);
}
//秘密抄送人
if (bcc != null)
foreach (string s_bcc in bcc)
{
m_Mail.Bcc.Add(s_bcc);
}
//抄送人
if (cc != null)
foreach (string s_cc in cc)
{
m_Mail.CC.Add(s_cc);
}
//定义邮件的主题
m_Mail.Subject = subject;
//定义邮件的主体
m_Mail.Body = body;
//'邮件以 HTML的格式发送
m_Mail.IsBodyHtml = bodyType.Equals("html");
//定义邮件的优先级,在此设定为高
m_Mail.Priority = System.Net.Mail.MailPriority.High;
// 给发送的邮件附加上一个附件
if (mailatta != null)
{
m_Mail.Attachments.Add(mailatta);
}
try
{
//加这段之前用公司邮箱发送报错:根据验证过程,远程证书无效
//加上后解决问题
ServicePointManager.ServerCertificateValidationCallback =
delegate(Object obj, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) { return true; };
smtpClient.Send(m_Mail);
}
catch (Exception e)
{
throw e;
}
}
public static void SendNetMail(string to, string subject, string text)
{
SendNetMail(new string[] { to }, null, null, subject, text, null, "html");
}
#endregion
}
}
记录下尝试的过程,防止忘记,再次感谢:http://t.zoukankan.com/yifengjianbai-p-6128396.html
Java发送mail和C#发送mail的更多相关文章
- java 发送 mail 纯文本发送和html格式发送
一:需要引入mail maven jar包 <!--邮件发送包--> <dependency> <groupId>javax.mail</groupId> ...
- JAVA Mail邮件实现发送
package com.test;import java.util.Date;import java.util.Properties;import javax.mail.Message;import ...
- 【Mail】JavaMail发送带附件的邮件(二)
上一篇讲了使用JavaMail发送普通邮件([Mail]JavaMail介绍及发送邮件(一)),本例讲发送复杂的邮件(带有附件的邮件) 生成一封复杂的邮件 新建一个JavaWeb的Maven工程,引入 ...
- Spring Boot Mail 实现邮件发送
此 demo 主要演示了 Spring Boot 如何整合邮件功能,包括发送简单文本邮件. 邮件服务在开发中非常常见,比如用邮件注册账号.邮件作为找回密码的途径.用于订阅内容定期邮件推送等等,下面就简 ...
- java带图片的邮件发送方法实现
package sendEmail; import java.util.Properties; import javax.activation.DataHandler; import javax.ac ...
- JAVA实用案例之邮件发送
最近有朋友问邮件怎么发送,就简单写了个demo,因为懒得找jar包,所以项目是创建的maven工程,具体的maven引用的jar如下: <dependency> <groupId&g ...
- Java和Spring邮件的发送
方法一: java发送电子邮件:这里以发送qq邮件为例: package test; import java.util.Properties; import javax.mail.Authentica ...
- 一个发送邮件的java类,包含多种发送方法
import java.util.Calendar;import java.util.Date; import java.util.Properties; import javax.mail.Addr ...
- java好用的邮件发送
1.action代码 // 发送邮件 String strEMAIL = Tools.readTxtFile(Const.EMAIL); //读取邮件配置 String strEM[] = strEM ...
- java实现简单邮件的发送以及常见问题
java实现简单邮件的发送以及常见问题 最近遇到个需求需要实现发送邮件的功能,以前做发送邮件功能都是有邮箱用户名密码,通过用户名密码连接对应的SMTP服务器来实现邮件的发送.但是这次用公司内部的邮箱, ...
随机推荐
- Canvas实现画布的缩放
主要介绍三种方式: 首先创建一个index.html文件 <!DOCTYPE html> <html lang="en"> <head> < ...
- 2023是AI爆发的元年,程序员赚钱的机会来了,附49个机会!
以下是程序员利用AI做代码生成的赚钱思路.方案,共49条,按照不同分类列出: 基于自然语言生成的机会: 1. 开发基于AI的自动生成代码软件,应用于网站开发.移动应用开发.家庭自动化.人工智能等各个领 ...
- Could not get a resource from the pool 异常定位和解决
最近在服务中经常看到以下错误,进行下定位和问题解决分析: 2023-12-08 00:10:58.248 WARN [terra-sr-server,a9006fd27ccb81d0,a9006fd2 ...
- Angular系列教程之DOM操作
.markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...
- P5728 【深基5.例5】旗鼓相当的对手
1.题目介绍 2.题解 2.1 二维数组 思路 主要熟悉vector创建二维数组的方法 vector<vector> ans(N,vector(3)); 这里第一个元素表明数组大小,第二个 ...
- 2023年度总结,互联网寒冬是躺平OR寻找风口
一.前言 又到了年底,这一年过的真的好快,犹如白驹过隙. 身体快跃过去了,灵魂还没有. 拿起键盘却迟迟无法下手,经过三天终于完成了! 这是很颓很丧的一年,很难看到自己的成长,就像登山卡在半山腰,开车堵 ...
- Spring Boot+Vue实现汽车租赁系统(毕设)
一.前言 汽车租赁系统,很常见的一个系统,但是网上还是以前的老框架实现的,于是我打算从设计到开发都用现在比较流行的新框架.想学习或者做毕设的可以私信联系哦!! 二.技术栈 - 后端技术 Spring ...
- NewStarCTF 2023 公开赛道 WEEK2|CRYPTO全解
一.滴啤 题目信息 from Crypto.Util.number import * import gmpy2 from flag import flag def gen_prime(number): ...
- 【Nginx系列】(一)Nginx基础概念
有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top 首发博客地址 文章更新计划 系列文章地址 Nginx的三个主要应用场景 静态 ...
- [转帖]Jmeter创建简单的HTTP(S)请求测试-3
在上一章节中,介绍了Jmeter基本的组成组件,那么我们如何使用这些组件去完成测试呢,以下将通过创建一个简单的HTTP(S)测试进行说明,另外,除JDBC请求外,Jmeter进行测试构建的步骤大同小异 ...