我有以下代码,它现在正是我需要的(使用java向手机发送短信)。
现在我的问题有点具体了,我不确定它的含义或是否有可能。
问题如下:
1 - 当我发送这封电子邮件时,每次创建一个通用(临时?)发件人(可能在gmail端),看起来总是像"1 (410) 000-00x"
,其中x似乎在向上/向下迭代(我只做了几次测试)。现在,下面的代码是实时日内电子邮件机制的一部分,用于将数据传达给人,以便他们采取某种行动。
2 - 因此,将发件人作为我的样本abc@gmail.com
是最佳的,但这不会发生。有没有办法强迫这种情况发生?我应该使用除gmail以外的东西吗?
任何指针都表示赞赏。
注:
我认为这可能会出现,所以我现在就说:行动极其时间敏感。有了这个,电子邮件响应不够,立即收到短信。我同意发送电子邮件会立即解决问题。
public static void sendIT() throws AddressException, MessagingException, javax.mail.MessagingException
{
String host = "smtp.gmail.com";
String from = "abc@gmail.com";
String pass = "test";
Properties props = System.getProperties();
props.put("mail.smtp.starttls.enable", "true"); // added this line
props.put("mail.smtp.host", host);
props.put("mail.smtp.user", from);
props.put("mail.smtp.password", pass);
props.put("mail.smtp.port", "587");
props.put("mail.smtp.auth", "true");
String[] to = {"5555555555@txt.att.net"};
Session session = Session.getDefaultInstance(props, null);
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
InternetAddress[] toAddress = new InternetAddress[to.length];
//message.setFileName(g.destFileTracker);
// To get the array of addresses
for( int i=0; i < to.length; i++ ) { // changed from a while loop
toAddress[i] = new InternetAddress(to[i]);
}
System.out.println(Message.RecipientType.TO);
for( int i=0; i < toAddress.length; i++) { // changed from a while loop
message.addRecipient(Message.RecipientType.BCC, toAddress[i]);
}
message.setSubject("Activity");
message.setText("test");
Transport transport = session.getTransport("smtp");
transport.connect(host, from, pass);
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}
答案 0 :(得分:2)
您应该尝试使用mms网关而不是txt网关。 mms网关将保留电子邮件地址。所以它不是txt.att.net,而是mms.att.net。
如果这对时间敏感,你应该坚持使用短信解决方案,然后去第三方,因为我发现彩信速度不够可靠。
答案 1 :(得分:0)
我很确定这个问题不在谷歌方面。 Google只会将您的Gmail帐户中的电子邮件发送到at-t网关。然而,AT-T网关以自己的方式将电子邮件地址转换为手机号码,并且无法控制它。
我有几个建议。
您可以在文本中包含“来自”消息。
您可以使用其他短信网关,但请注意,其中大多数都不是免费的。