send mail using smtp to hotmail | Newbie | | Join Date: Oct 2006
Posts: 1
| |
I have a classe to send mails. It runs on yahoo well but with hotmail I never receive the mails.I do not receive an error neither.
I would need some strange header to make the hotmail like my email????
My code is: -
import java.net.*;
-
import java.io.*;
-
import java.util.*;
-
import java.text.*;
-
import javax.naming.*;
-
import javax.naming.directory.*;
-
-
public class SmtpSimple
-
{
-
private DataOutputStream os = null;
-
private BufferedReader is = null;
-
private String sRt = "";
-
private final String CRLF = "\r\n";
-
-
private final void writeRead( boolean bReadAnswer,
-
String sAnswerMustStartWith,
-
String sWrite )
-
throws IOException, Exception
-
{
-
System.out.println("Mando->"+sWrite);
-
if( null != sWrite && 0 < sWrite.length() )
-
{
-
sRt += sWrite;
-
os.writeBytes( sWrite );
-
}
-
if( bReadAnswer )
-
{
-
String sRd = is.readLine() + "\n";
-
System.out.println("Recibo->"+sRd);
-
sRt += sRd;
-
if( null != sAnswerMustStartWith
-
&& 0 < sAnswerMustStartWith.length()
-
&& !sRd.startsWith( sAnswerMustStartWith ) )
-
throw new Exception( sRt );
-
}
-
}
-
-
public synchronized final String sendEmail( String sSmtpServer,
-
String sFromAdr, String sFromRealName,
-
String sToAdr, String sToRealName,
-
String sSubject, String sText )
-
throws IOException, Exception
-
{
-
sRt = "";
-
if( null == sSmtpServer || 0 >= sSmtpServer.length() ||
-
null == sFromAdr || 0 >= sFromAdr.length() ||
-
null == sToAdr || 0 >= sToAdr.length() ||
-
( (null == sSubject || 0 >= sSubject.length())
-
&& (null == sText || 0 >= sText.length()) ) )
-
throw new Exception( "Invalid Parameters for SmtpSimple.sendEmail()." );
-
if( null == sFromRealName || 0 >= sFromRealName.length() ) sFromRealName = sFromAdr;
-
if( null == sToRealName || 0 >= sToRealName.length() ) sToRealName = sToAdr;
-
Socket so = new Socket( sSmtpServer, 25 );
-
os = new DataOutputStream( so.getOutputStream() );
-
is = new BufferedReader(
-
new InputStreamReader( so.getInputStream() ) );
-
so.setSoTimeout( 10000 );
-
writeRead( true, "220", null );
-
writeRead( true, "250", "HELO " + sSmtpServer + CRLF );
-
writeRead( true, "250", "MAIL FROM:<" + sFromAdr + "> "+ CRLF );
-
writeRead( true, "250", "RCPT TO:<" + sToAdr + ">"+ CRLF );
-
writeRead( true, "354", "DATA"+ CRLF );
-
writeRead( false, null, "Return-Path: root@plexus.kodics.de\n" );//necesaria para hotmail
-
writeRead( false, null, "Date: " + getDateString()+ "\n" );
-
writeRead( false, null, "From: " + sFromRealName + " <" + sFromAdr + ">"+ "\n" );
-
writeRead( false, null, "To: " + sToRealName + " <" + sToAdr + ">"+ "\n" );
-
writeRead( false, null, "Subject: " + sSubject + "\n");
-
writeRead( false, null, "Mime-Version: 1.0"+ "\n" );
-
writeRead( false, null, "X-Mailer: PHP v5.1"+ "\n" );
-
writeRead( false, null, "Content-Type: text/html; charset=iso-8859-1"+ "\n" );
-
writeRead( false, null, "Message-ID: <"+(new java.util.Date()).getTime()+"@plexus.kodics.de>"+ "\n" );//necesaria para hotmail
-
writeRead( false, null, "Content-Transfer-Encoding: 7bit"+ "\n" );
-
writeRead( false, null, "\n");
-
writeRead( false, null, "<html><body><table><tr><td>Mensaje de prueba</td></tr></table></body></html>");
-
//writeRead( false, null, base64encode("<html><body><table><tr><td>Mensaje de prueba</td></tr></table></body></html>\n"));
-
writeRead( true, "250", CRLF+"."+ CRLF );
-
writeRead( true, "221", "QUIT"+ CRLF );
-
is.close();
-
os.close();
-
so.close();
-
is = null;
-
os = null;
-
return sRt;
-
}
-
-
public static void main( String[] args )
-
{
-
String sSmtpServer = "";
-
String sFromAdr = "root@plexus.kodics.de";
-
String sFromRealName = "root";
-
String sToAdr1 = "jlconde15@hotmail.com";
-
String sToAdr2 = "lillae25@yahoo.de";
-
String sToAdr3 = "jlconde@globalia-sistemas.com";
-
String sToRealName = "Jose";
-
String sSubject = "subject text/html";
-
String sText = "texto body";
-
Iterator it;
-
try
-
{
-
SmtpSimple smtp = new SmtpSimple();
-
-
-
it = getServers(sToAdr1).iterator();
-
while (it.hasNext())
-
{
-
try
-
{
-
sSmtpServer = (String) it.next();
-
smtp.sendEmail( sSmtpServer, sFromAdr, sFromRealName, sToAdr1, sToRealName, sSubject, sText);
-
break;
-
}
-
catch (Exception e)
-
{
-
System.out.println("Error con servidor "+sSmtpServer+" ->"+e);
-
}
-
}
-
-
-
-
/*
-
it = getServers(sToAdr2).iterator();
-
while (it.hasNext())
-
{
-
try
-
{
-
sSmtpServer = (String) it.next();
-
smtp.sendEmail( sSmtpServer, sFromAdr, sFromRealName, sToAdr2, sToRealName, sSubject, sText);
-
break;
-
}
-
catch (Exception e)
-
{
-
System.out.println("Error con servidor "+sSmtpServer+" ->"+e);
-
}
-
}
-
-
*/
-
-
/*
-
it = getServers(sToAdr3).iterator();
-
while (it.hasNext())
-
{
-
try
-
{
-
sSmtpServer = (String) it.next();
-
smtp.sendEmail( sSmtpServer, sFromAdr, sFromRealName, sToAdr3, sToRealName, sSubject, sText);
-
break;
-
}
-
catch (Exception e)
-
{
-
System.out.println("Error con servidor "+sSmtpServer+" ->"+e);
-
}
-
}
-
*/
-
-
-
}
-
catch( Exception ex )
-
{
-
System.out.println( "Error:\n" + ex );
-
System.exit( 2 );
-
}
-
System.exit( 0 );
-
}
-
-
public static Vector getServers(String email) throws Exception{
-
Vector mxserver=new Vector();
-
String hostName;
-
-
if (email.indexOf("@") == -1)
-
{
-
throw new Exception("Error E-mail address");
-
}
-
hostName = email.substring(email.indexOf("@")+1);
-
String mailer=hostName,ip="";
-
-
try{
-
Hashtable env = new Hashtable();
-
env.put("java.naming.factory.initial","com.sun.jndi.dns.DnsContextFactory");
-
DirContext ictx = new InitialDirContext( env );
-
Attributes attrs = ictx.getAttributes( hostName, new String[] { "MX" });
-
Attribute attr1 = attrs.get( "MX" );
-
Vector mxweight=new Vector();
-
int weight=999,max=0;
-
for (int i=0;i<attr1.size();i++){
-
String mxrec=(String)attr1.get(i);
-
Integer theweight=new Integer(mxrec.substring(0,mxrec.indexOf(" ")));
-
String theserver=mxrec.substring(mxrec.indexOf(" ")+1);
-
if (theserver.endsWith(".")) theserver=theserver.substring(0,theserver.length()-1);
-
if (theweight.compareTo(weight)<0) {
-
mxweight.add(0,theweight);
-
mxserver.add(0,theserver);
-
weight=theweight;
-
} else {
-
boolean filled=false;
-
for (int j=0;j<mxweight.size();j++){
-
if (((Integer)mxweight.elementAt(j)).compareTo(theweight)>0) {
-
mxweight.add(j,theweight);
-
mxserver.add(j,theserver);
-
filled=true;
-
break;
-
}
-
}
-
if (!filled) {
-
mxweight.add(mxweight.size(),theweight);
-
mxserver.add(mxserver.size(),theserver);
-
}
-
}
-
}
-
}catch (Exception e) {
-
throw new Exception(e.getMessage());
-
}
-
if (mxserver.size()==0) mxserver.add(hostName);
-
return mxserver;
-
}
-
-
static String getDateString(){
-
SimpleDateFormat formatter= new SimpleDateFormat ("EEE, dd MMM yyyy HH:mm:ss 'XXXXX'",Locale.US);
-
formatter.setTimeZone(TimeZone.getTimeZone("Europe/Berlin"));
-
String str=formatter.format(new java.util.Date().getTime());
-
int pos = 0,start=0;
-
StringBuffer dateStrBuf=new StringBuffer(str);
-
for (pos = start + 25; dateStrBuf.charAt(pos) != 'X'; pos++) ;
-
Calendar calendar=Calendar.getInstance();
-
int offset = calendar.get(Calendar.ZONE_OFFSET) +calendar.get(Calendar.DST_OFFSET);
-
if (offset < 0) {
-
dateStrBuf.setCharAt(pos++, '-');
-
offset = (-offset);
-
} else dateStrBuf.setCharAt(pos++, '+');
-
int rawOffsetInMins = offset / 60 / 1000; // offset from GMT in mins
-
int offsetInHrs = rawOffsetInMins / 60;
-
int offsetInMins = rawOffsetInMins % 60;
-
dateStrBuf.setCharAt(pos++, Character.forDigit((offsetInHrs/10), 10));
-
dateStrBuf.setCharAt(pos++, Character.forDigit((offsetInHrs%10), 10));
-
dateStrBuf.setCharAt(pos++, Character.forDigit((offsetInMins/10), 10));
-
dateStrBuf.setCharAt(pos++, Character.forDigit((offsetInMins%10), 10));
-
return dateStrBuf.toString()+ " (CEST)";
-
}
-
-
public static String base64encode(String plain) {
-
int maxturns;
-
StringBuffer sb=new StringBuffer();
-
byte[] enc=new byte[3];
-
boolean end=false;
-
for(int i=0,j=0; !end; i++) {
-
char _ch=plain.charAt(i);
-
if(i==plain.length()-1) end=true;
-
enc[j++]=(byte)plain.charAt(i);
-
if(j==3 || end) {
-
int res;
-
res=(enc[0] << 16)+(enc[1] << 8)+enc[2];
-
int b;
-
int lowestbit=18-(j*6);
-
for(int toshift=18; toshift>=lowestbit; toshift-=6) {
-
b=res >>> toshift;
-
b&=63;
-
if(b>=0 && b<26) sb.append((char)(b+65));
-
if(b>=26 && b<52) sb.append((char)(b+71));
-
if(b>=52 && b<62) sb.append((char)(b-4));
-
if(b==62) sb.append('+');
-
if(b==63) sb.append('/');
-
if(sb.length()%76==0) sb.append("\r\n");
-
}
-
if(end) {
-
if(j==1) sb.append("==");
-
if(j==2) sb.append('=');
-
}
-
enc[0]=0; enc[1]=0; enc[2]=0;
-
j=0;
-
}
-
}
-
return sb.toString();
-
}
-
}
-
Thanks!
|  | | | | /bytes/about
We are a network of experts and professionals in IT and software development that help one another with answers to tough questions and share insights.
Get the best answers to your questions from over 226,471 network members.
|