faqts : Computers : Programming : Languages : PHP : Function Libraries : Mail

+ Search
Add Entry AlertManage Folder Edit Entry Add page to http://del.icio.us/
Did You Find This Entry Useful?

11 of 13 people (85%) answered Yes
Recently 8 of 10 people (80%) answered Yes

Entry

How can i send a e-mail using php if i doesn't have an SMTP server on localhost?
How can i send a e-mail using a RELAY SMTP server and that required authorisation?
If i can't use mail() function, i can use another method to send a e-mail ?

Jan 7th, 2006 16:47
Tanase Laurentiu Iulian, http://www.xpertmailer.com/


<?php

/********************************************************************
 * XPertMailer is a php class that you can use to send encoded      *
 * MIME type e-mail messages (text, HTML, HTML embeded images,      *
 * attachments) towards a localhost, client or relay SMTP servers   *
 * with optional authorisation                                      
*     
 * ---------------------------------------------------------------- *
 * For more informations, please visit: http://www.xpertmailer.com/ *
 ********************************************************************/

@set_time_limit(0);
@error_reporting(E_ALL); // for debugging

// you will need to download the latest version of XPertMailer from
// http://sourceforge.net/projects/xpertmailer/
require_once 'XPertMailer.php';

/**
 * send a complex mail - text/html format
 * with two HTML embeded images and two attachment files
 * --------------------------------------
 */

// $mail = new XPertMailer; // <-- by default SMTP_LOCAL_CLIENT
// but you can optionaly use an relay host (name or ip)
$mail = new XPertMailer(SMTP_RELAY, "relay-host-name.com");

// optionaly you can set authentification for relay host
$mail->auth("username", "password");

// optionaly you can set time out for each smtp server connection
$mail->timeout(30);

// optionaly you can set priority high (default is P_NORMAL - normal)
$mail->priority(P_HIGH);

// optionaly you can set from mail address and optionaly from name
$mail->from("my@account.com", "My Name");

// optionaly you can set each header name and value
$header['Cc'] = "example1@domain.com";
$header['Bcc'] = "example2@domain.com";
$header['Reply-To'] = "reply@domain.com";
$header['X-Whatever'] = "description";

// set additional header informations
$mail->headers($header);

// set HTML embedded images name and optionaly you can rename them
// if the file is not in this directory, write the path name
// Attention: do not include path name in the rename
$imgs[] = "image1.jpg";
$imgs['newname.gif'] = "image2.gif";

// attach HTML embedded images
$mail->attach($imgs, ATTACH_HTML_IMG);

// set attachment files name and optional you can rename them
// if the file is not in this directory, write the path name
$file['new.zip'] = "archive1.zip";
$file[] = "archive2.tar.gz";

// attach files
$mail->attach($file, ATTACH_FILE);

// set the HTML message value
// Attention: do not include image path name
$html = '
<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">
<html>
<body>
<img src="image1.jpg" border="0"><br>
<b><u><i>next image</i></u></b> :-)<br>
<img src="newname.gif" border="2"><br>
<font color="red">message html red here</font>
</body>
</html>';

// send the e-mail and optionaly you can set charset value
// as you can see, the text/plain message is required because
// not all mail clients can currently support HTML messages
$send = $mail->send("expertphp@domain.com", "subject here", 
					"this is a HTML message", 
$html, "UTF-8");

// output -->
// compare the result and print a message
echo $send ? "Done." : "Error.";

// some useful for debugging
echo "<br>Server response: ".$mail->response();

?>