⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 email.java

📁 Java写的ERP系统
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
		catch (SQLException e)
		{
			s_log.error ("getSmtpHost", e);
		}
		//
		return SMTP;
	}	//	getCurrentSMTPHost


	/**	Getter/Setter ********************************************************/

	/**
	 * 	Create Authentificator for User
	 * 	@param username user name
	 * 	@param password user password
	 */
	public void setEMailUser (String username, String password)
	{
		log.debug("setEMailUser " + username);
		m_auth = new EMailAuthenticator (username, password);
	}	//	setEmailUser

	/**
	 *	Try to set Authentication
	 */
	private void setEMailUser ()
	{
		//	already set
		if (m_auth != null)
			return;
		//
		String from = m_from.getAddress();
		Properties ctx = m_ctx == null ? Env.getCtx() : m_ctx;
		//
		String email = Env.getContext(ctx, CTX_EMAIL);
		String usr = Env.getContext(ctx, CTX_EMAIL_USER);
		String pwd = Env.getContext(ctx, CTX_EMAIL_USERPW);
		if (from.equals(email) && usr.length() > 0 && pwd.length() > 0)
		{
			setEMailUser (usr, pwd);
			return;
		}
		email = Env.getContext(ctx, CTX_REQUEST_EMAIL);
		usr = Env.getContext(ctx, CTX_REQUEST_EMAIL_USER);
		pwd = Env.getContext(ctx, CTX_REQUEST_EMAIL_USERPW);
		if (from.equals(email) && usr.length() > 0 && pwd.length() > 0)
			setEMailUser (usr, pwd);
	}	//	setEMailUser


	/**
	 *  Get Sender
	 *  @return Sender's internet address
	 */
	public InternetAddress getFrom()
	{
		return m_from;
	}   //  getFrom

	/**
	 *  Set Sender
	 *  @param newFrom Sender's email address
	 */
	public void setFrom(String newFrom)
	{
		if (newFrom == null)
		{
			m_valid = false;
			return;
		}
		try
		{
			m_from = new InternetAddress (newFrom, true);
		}
		catch (Exception e)
		{
			log.error("setFrom", e);
			m_valid = false;
		}
	}   //  setFrom

	/**
	 *  Add To Recipient
	 *  @param newTo Recipient's email address
	 * 	@returns true if valid
	 */
	public boolean addTo (String newTo)
	{
		if (newTo == null || newTo.length() == 0)
		{
			m_valid = false;
			return false;
		}
		InternetAddress ia = null;
		try
		{
			ia = new InternetAddress (newTo, true);
		}
		catch (Exception e)
		{
			log.error("addTo", e);
			m_valid = false;
			return false;
		}
		if (m_to == null)
			m_to = new ArrayList();
		m_to.add(ia);
		return true;
	}   //  addTo

	/**
	 *  Get Recipient
	 *  @return Recipient's internet address
	 */
	public InternetAddress getTo()
	{
		if (m_to == null || m_to.size() == 0)
			return null;
		InternetAddress ia = (InternetAddress)m_to.get(0);
		return ia;
	}   //  getTo

	/**
	 *  Get TO Recipients
	 *  @return Recipient's internet address
	 */
	public InternetAddress[] getTos()
	{
		if (m_to == null || m_to.size() == 0)
			return null;
		InternetAddress[] ias = new InternetAddress[m_to.size()];
		m_to.toArray(ias);
		return ias;
	}   //  getTos

	/**
	 * 	Add CC Recipient
	 * 	@param newCc EMail cc Recipient
	 * 	@returns true if valid
	 */
	public boolean addCc (String newCc)
	{
		if (newCc == null || newCc.length() == 0)
			return false;
		InternetAddress ia = null;
		try
		{
			ia = new InternetAddress (newCc, true);
		}
		catch (Exception e)
		{
			log.error("addCc", e);
			return false;
		}
		if (m_cc == null)
			m_cc = new ArrayList();
		m_cc.add (ia);
		return true;
	}	//	addCc

	/**
	 *  Get CC Recipients
	 *  @return Recipient's internet address
	 */
	public InternetAddress[] getCcs()
	{
		if (m_cc == null || m_cc.size() == 0)
			return null;
		InternetAddress[] ias = new InternetAddress[m_cc.size()];
		m_cc.toArray(ias);
		return ias;
	}   //  getCcs

	/**
	 * 	Add BCC Recipient
	 * 	@param newBcc EMail cc Recipient
	 * 	@returns true if valid
	 */
	public boolean addBcc (String newBcc)
	{
		if (newBcc == null || newBcc.length() == 0)
			return false;
		InternetAddress ia = null;
		try
		{
			ia = new InternetAddress (newBcc, true);
		}
		catch (Exception e)
		{
			log.error("addBcc", e);
			return false;
		}
		if (m_bcc == null)
			m_bcc = new ArrayList();
		m_bcc.add (ia);
		return true;
	}	//	addBcc

	/**
	 *  Get BCC Recipients
	 *  @return Recipient's internet address
	 */
	public InternetAddress[] getBccs()
	{
		if (m_bcc == null || m_bcc.size() == 0)
			return null;
		InternetAddress[] ias = new InternetAddress[m_bcc.size()];
		m_bcc.toArray(ias);
		return ias;
	}   //  getBccs

	/**
	 *  Set Reply to Address
	 *  @param newTo email address
	 * 	@returns true if valid
	 */
	public boolean setReplyTo (String newTo)
	{
		if (newTo == null || newTo.length() == 0)
			return false;
		InternetAddress ia = null;
		try
		{
			ia = new InternetAddress (newTo, true);
		}
		catch (Exception e)
		{
			log.error("setReplyTo", e);
			return false;
		}
		m_replyTo = ia;
		return true;
	}   //  setReplyTo

	/**
	 *  Get Reply To
	 *  @return Reoly To internet address
	 */
	public InternetAddress getReplyTo()
	{
		return m_replyTo;
	}   //  getReplyTo

	/*************************************************************************/

	/**
	 *  Set Subject
	 *  @param newSubject Subject
	 */
	public void setSubject(String newSubject)
	{
		if (newSubject == null || newSubject.length() == 0)
			m_valid = false;
		else
			m_subject = newSubject;
	}   //  setSubject

	/**
	 *  Get Subject
	 *  @return subject
	 */
	public String getSubject()
	{
		return m_subject;
	}   //  getSubject

	/**
	 *  Set Message
	 *  @param newMessage message
	 */
	public void setMessageText (String newMessage)
	{
		if (newMessage == null || newMessage.length() == 0)
			m_valid = false;
		else
		{
			m_messageText = newMessage;
			if (!m_messageText.endsWith("\n"))
				m_messageText += "\n";
		}
	}   //  setMessage

	/**
	 *  Get MIME String Message - line ending with CRLF.
	 *  @return message
	 */
	public String getMessageCRLF()
	{
		if (m_messageText == null)
			return "";
		char[] chars = m_messageText.toCharArray();
		StringBuffer sb = new StringBuffer();
		for (int i = 0; i < chars.length; i++)
		{
			char c = chars[i];
			if (c == '\n')
			{
				int previous = i-1;
				if (previous >= 0 && chars[previous] == '\r')
					sb.append(c);
				else
					sb.append("\r\n");
			}
			else
				sb.append(c);
		}
	//	log.debug("IN  " + m_messageText);
	//	log.debug("OUT " + sb);
		return sb.toString();
	}   //  getMessageCRLF

	/**
	 *  Set HTML Message
	 *  @param html message
	 */
	public void setMessageHTML (String html)
	{
		if (html == null || html.length() == 0)
			m_valid = false;
		else
		{
			m_messageHTML = html;
			if (!m_messageHTML.endsWith("\n"))
				m_messageHTML += "\n";
		}
	}   //  setMessageHTML

	/**
	 *  Set HTML Message
	 *  @param subject subject repeated in message as H2
	 * 	@param message message
	 */
	public void setMessageHTML (String subject, String message)
	{
		m_subject = subject;
		StringBuffer sb = new StringBuffer("<HTML>\n")
			.append("<HEAD>\n")
			.append("<TITLE>\n")
			.append(subject + "\n")
			.append("</TITLE>\n")
			.append("</HEAD>\n");
		sb.append("<BODY>\n")
			.append("<H2>" + subject + "</H2>" + "\n")
			.append(message)
			.append("\n")
			.append("</BODY>\n");
		sb.append("</HTML>\n");
		m_messageHTML = sb.toString();
	}   //  setMessageHTML

	/**
	 *  Get HTML Message
	 *  @return message
	 */
	public String getMessageHTML()
	{
		return m_messageHTML;
	}   //  getMessageHTML

	/**
	 *	Add file Attachment
	 * 	@param file file to attach
	 */
	public void addAttachment (File file)
	{
		if (file == null)
			return;
		if (m_attachments == null)
			m_attachments = new ArrayList();
		m_attachments.add(file);
	}	//	addAttachment

	/**
	 *	Add url based file Attachment
	 * 	@param url url content to attach
	 */
	public void addAttachment (URL url)
	{
		if (url == null)
			return;
		if (m_attachments == null)
			m_attachments = new ArrayList();
		m_attachments.add(url);
	}	//	addAttachment

	/**
	 *	Add attachment.
	 *  (converted to ByteArrayDataSource)
	 * 	@param data data
	 * 	@param type MIME type
	 * 	@param name name of attachment
	 */
	public void addAttachment (byte[] data, String type, String name)
	{
		ByteArrayDataSource byteArray = new ByteArrayDataSource (data, type).setName(name);
		addAttachment (byteArray);
	}	//	addAttachment

	/**
	 *	Add arbitary Attachment
	 * 	@param dataSource content to attach
	 */
	public void addAttachment (DataSource dataSource)
	{
		if (dataSource == null)
			return;
		if (m_attachments == null)
			m_attachments = new ArrayList();
		m_attachments.add(dataSource);
	}	//	addAttachment

	/**
	 *	Set the message content
	 * 	@throws MessagingException
	 * 	@throws IOException
	 */
	private void setContent ()
		throws MessagingException, IOException
	{
		m_msg.setSubject (getSubject ());

		//	Simple Message
		if (m_attachments == null || m_attachments.size() == 0)
		{
			if (m_messageHTML == null || m_messageHTML.length () == 0)
				m_msg.setContent (getMessageCRLF(), "text/plain");
			else
				m_msg.setDataHandler (new DataHandler
					(new ByteArrayDataSource (m_messageHTML, "text/html")));
			//
			log.debug("setContent (simple) " + getSubject());
		}
		else	//	Multi part message	***************************************
		{
			//	First Part - Message
			MimeBodyPart mbp_1 = new MimeBodyPart();
			mbp_1.setText("");
			if (m_messageHTML == null || m_messageHTML.length () == 0)
				mbp_1.setContent (getMessageCRLF(), "text/plain");
			else
				mbp_1.setDataHandler (new DataHandler
					(new ByteArrayDataSource (m_messageHTML, "text/html")));

			// Create Multipart and its parts to it
			Multipart mp = new MimeMultipart();
			mp.addBodyPart(mbp_1);
			log.debug("setContent (multi) " + getSubject() + " - " + mbp_1);

			//	for all attachments
			for (int i = 0; i < m_attachments.size(); i++)
			{
				Object attachment = m_attachments.get(i);
				DataSource ds = null;
				if (attachment instanceof File)
				{
					File file = (File)attachment;
					if (file.exists())
						ds = new FileDataSource (file);
					else
					{
						log.error("setContent - File does not exist: " + file);
						continue;
					}
				}
				else if (attachment instanceof URL)
				{
					URL url = (URL)attachment;
					ds = new URLDataSource (url);
				}
				else if (attachment instanceof DataSource)
					ds = (DataSource)attachment;
				else
				{
					log.error("setContent - Attachement type unknown: " + attachment);
					continue;
				}
				//	Attachment Part
				MimeBodyPart mbp_2 = new MimeBodyPart();
				mbp_2.setDataHandler(new DataHandler(ds));
				mbp_2.setFileName(ds.getName());
				log.debug("setContent - Added Attachment " + ds.getName() + " - " + mbp_2);
				mp.addBodyPart(mbp_2);
			}

			//	Add to Message
			m_msg.setContent(mp);
		}	//	multi=part
	}	//	setContent

	/*************************************************************************/

	/**
	 *  Set SMTP Host or address
	 *  @param newSmtpHost Mail server
	 */
	public void setSmtpHost(String newSmtpHost)
	{
		if (newSmtpHost == null || newSmtpHost.length() == 0)
			m_valid = false;
		else
			m_smtpHost = newSmtpHost;
	}   //  setSMTPHost

	/**
	 *  Get Mail Server name or address
	 *  @return mail server
	 */
	public String getSmtpHost()
	{
		return m_smtpHost;
	}   //  getSmtpHosr

	/**
	 *  Is Info valid to send EMail
	 *  @return true if email is valid and can be sent
	 */
	public boolean isValid()
	{
		return m_valid;
	}   //  isValid

	/**
	 *  Re-Check Info if valid to send EMail
	 *  @param recheck if true, re-evaluate email
	 *  @return true if email is valid and can be sent
	 */
	public boolean isValid (boolean recheck)
	{
		//  mandatory info
		if (m_from == null || m_from.getAddress().length() == 0)
		{
			log.warn("isValid - From is invalid=" + m_from);
			return false;
		}
		InternetAddress ia = getTo();
		if (ia == null || ia.getAddress().length() == 0)
		{
			log.warn("isValid - To is invalid=" + m_to);
			return false;
		}
		if (m_smtpHost == null || m_smtpHost.length() == 0)
		{
			log.warn("isValid - SMTP Host is invalid" + m_smtpHost);
			return false;
		}
		if (m_subject == null || m_subject.length() == 0)
		{
			log.warn("isValid - Subject is invalid=" + m_subject);
			return false;
		}
		return true;
	}   //  isValid


	/**
	 *  Test
	 *  java -cp CTools.jar;CClient.jar org.compiere.util.EMail main info@compiere.org jjanke@compiere.org "My Subject"  "My Message"
	 *  @param args Array of arguments
	 */
	public static void main (String[] args)
	{
		org.compiere.Compiere.startupClient ();
		Log.setTraceLevel(9);
		/**	Test **/
		EMail emailTest = new EMail("main", "jjanke@compiere.org", "jjanke@compiere.org", "TestSubject", "TestMessage");
	//	EMail emailTest = new EMail("main", "jjanke@compiere.org", "jjanke@yahoo.com");
	//	emailTest.addTo("jjanke@acm.org");
	//	emailTest.addCc("jjanke@yahoo.com");
	//	emailTest.setMessageHTML("My Subject1", "My Message1");
	//	emailTest.addAttachment(new File("C:\\Compiere2\\RUN_Compiere2.sh"));
	//	emailTest.setEMailUser("jjanke", "joergok");
		emailTest.send();
		System.exit(0);
		/**	Test	*/

		if (args.length != 5)
		{
			System.out.println("Parameters: smtpHost from to subject message");
			System.out.println("Example: java org.compiere.util.EMail mail.acme.com joe@acme.com sue@acme.com HiThere CheersJoe");
			System.exit(1);
		}
		EMail email = new EMail(args[0], args[1], args[2], args[3], args[4]);
		email.send();
	}   //  main

}	//	EMail

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -