Sendcloud邮件发送api拼接问题

本文档记录了使用SendGrid API进行模板邮件发送时遇到的问题及解决方法。在尝试用非QQ邮箱(如sina.com)发送模板邮件时,遇到了xsmtpapi格式错误,原因是code值非纯数字或者缺少参数引号。通过修正xsmtpapi参数的格式,即为code值添加引号,解决了该问题。现在可以成功发送包含非数字code值的邮件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

记录一些使用问题

官网地址http://blog.sendcloud.net/
常用的是普通发送和模板发送,下列代码以模板发送为例
模板发送工具类

public int send_template_maillist(String useremail,String code) throws ClientProtocolException, IOException {

		final String url = "http://api.sendcloud.net/apiv2/mail/sendtemplate";
		 int msg =0;
		final String apiUser = "用户名";
		final String apiKey = "用户密钥";  
		/**
		*拼接的参数串
		*/
		 String xsmi="{\"to\": ["+useremail+"],\"sub\":{\"%name%\": [\"Ben\"],\"%code%\":["+code+"]}}";

		CloseableHttpClient httpClient = HttpClients.createDefault();
		HttpPost httpPost = new HttpPost(url);
		List<NameValuePair> params = new ArrayList<NameValuePair>();
		params.add(new BasicNameValuePair("apiUser", apiUser));
		params.add(new BasicNameValuePair("apiKey", apiKey));
		params.add(new BasicNameValuePair("templateInvokeName", "模板名称"));
		params.add(new BasicNameValuePair("from", "发送者的邮箱地址"));
		params.add(new BasicNameValuePair("fromName", "随便的名字"));
		params.add(new BasicNameValuePair("useAddressList", "false"));
		params.add(new BasicNameValuePair("xsmtpapi", xsmi));
		httpPost.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
		HttpResponse response = httpClient.execute(httpPost);
		if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { 
			System.out.println(EntityUtils.toString(response.getEntity()));
			msg=1;
		} else {
			System.err.println("error");
			msg=0;
		}
		httpPost.releaseConnection();
		return msg;
	}

这样是可以用qq邮箱,但是(纯字母)的邮箱比如sfjfjsfadg@sina.comm,会提示xsmtpapi格式错误。code的值只能是纯数字形式的,否则也是xsmtpapi格式错误。

String xsmi="{\"to\": ['"+useremail+"'],\"sub\":{\"%name%\": [\"Ben\"],\"%code%\":['"+code+"']}}";

在参数上再加上一个引号就可以了,转义后实际发送的是
String xsmi="{“to”: [‘qqqqqqq.@qq.com’],“sub”:{"%name%": [“Ben”],"%code%":[‘sae954’]}}";
问题解决。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值