I'm try to sent email by my localhost php, but the problem is i didn't receive anything in my email, what should i configure?
Here is my code
$to="someone#gmail.com";
$name="jason";
$subject="test message";
$header="From: $name";
$message="blah blah blah";
$sentmail=mail($to,$subject,$message,$header);
echo $sentmail ? "email send" : "email send fail"?
as the result was "email send"
There are 2 reason not to send email from your localhost..
You don't have mail server setup in your local environment
You are not using SMTP service to send the email.
So either you have to configure the mail server but I don't think that this is a handy solution.
Better you try to use SMTP service. To do this it will be better if your use PHPMailer.
Here is an example using PHPMailer class.
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->CharSet = 'UTF-8';
$mail->Host = "mail.example.com"; // SMTP server example
$mail->SMTPDebug = 0; // enables SMTP debug information (for testing)
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->Port = 25; // set the SMTP port for the GMAIL server
$mail->Username = "username"; // SMTP account username example
$mail->Password = "password";
You can use this class for any kind of email as a alternative of PHP : mail().
mail function will Returns TRUE if the mail was successfully accepted for delivery, FALSE otherwise.
mail function will not check whether mail reached in your inbox
http://php.net/manual/en/function.mail.php
You can't check whether mail has been delivered, but you can check whether the recipients opened your mail with tracking pixel https://support.google.com/dfp_premium/answer/1347585?hl=en
You should integrate a mail server in your local machine to send mail.The php mail function return true if all parameters are correct, it will not check delivery status.
Read this, http://www.zenddeveloper.com/how-to-send-emails-from-localhost-apachephp-server/
and http://roshanbh.com.np/2007/12/sending-e-mail-from-localhost-in-php-in-windows-environment.html
You need to have a mail server to send emails in localhost.Check PHP : send mail in localhost
By default, PHP's mail() function will deliver mail to the sendmail program on Linux.
For sendmail to work, you are required to have a properly configured and functioning MTA. For example, postfix is an MTA that is relatively easy to configure.
When configuring your MTA, you can either configure it to send mail directly, as a mail server on the internet, or to relay your mail to another server.
Configuring your own MTA to deliver mail directly is not for the light-hearted. Sending email has become complicated now, requiring a lot of work to be able to have your mail accepted by major mail servers like gmail or yahoo.
If your ISP provides an outgoing mail server and is happy to relay mail for you, you can set up postfix to relay all mail via that server instead, and save yourself some configuration hassle. If you use postfix, this simply requires setting it up like the example under Postfix on a null client in the postfix configuration.
The main thing to remember, no matter how you are configuring your mail server, is to avoid setting it up to relay incoming mail on the outgoing network (ie, setting it up as an open relay). In the null mailer example configuration, the line inet_interfaces = loopback-only achieves this.
Note that an alternative to setting up postfix or something as an MTA is to uses PHP's own built in SMTP support, which essentially means you are using PHP itself as an MTA which only forwards mail to a relay.
The advantage to using a dedicated MTA like postfix is reliability. Postfix can queue email if there is a temporary problem reaching the external mail relay. It also returns as soon as the mail has been queued, so your PHP mail function will execute much faster and won't need to wait while the mail is delivered to the external mail relay.
You need to have the content-type on your header. To make it easier, you could write simple function and then call it. Here's an example:
function sendMail($to, $title, $url, $from, $username, $password) {
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: '.$title.' <'.$from.'>' . "\r\n";
$subject = 'Welcome to '.$title;
$message = 'Thank you for joining <strong>'.$title.'</strong><br /><br />Your username: <strong>'.$username.'</strong><br />Your Password: <strong>'.$password.'</strong><br /><br />You can log-in at: '.$title.'';
return #mail($to, $subject, $message, $headers);
}
Related
i tried to use mailer package but its not supporting web , also i tried xampp send mail with gmail smtp but it gives me error
: mail(): SMTP server response: 530 5.7.0 Must issue a STARTTLS command first.
any solution ?
<?php
$to_email = 'email#gmail.com';
$subject = "change pw";
$body = "pwppwpwpwp";
$headers = "From: email#gmail.com";
if (mail($to_email, $subject, $body, $headers))
{
echo "Email successfully sent to $to_email...";
}
?>
Your server wants encrypted transmission which mail() cannot offer (TLS stands for Transport Layer Security) In short, mail() sucks and it sucks for ages. Not sure why this garbage is still in the language. It is very plain, dumb and usually useless function supporting nothing modern mail servers require or support. You always want to use literally anything available but mail() i.e your framework's mailer class or PHPMailer instead.
Am not having good knowledge in PHP, I have just started to work on it...
Now am trying to use mail() function as example given in w3schools.com
<?php
$to = "ramkumarpece05#gmail.com";
$subject = "Test mail";
$message = "Hello! This is a simple email message.";
$from = "ramp211087#gmail.com";
$headers = "From:" . $from;
mail($to,$subject,$message,$headers);
echo "Mail Sent.";
?>
for this am getting error message as follows
Warning: mail(): Failed to connect to mailserver at "localhost" port 25, verify
your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in F:\contact.ph
p on line 7
Mail Sent.
where the php.ini file is located or i have to download it from the internet.....
Please help me to solve this issue...
You probably didn't install a mail server on your machine, you can install one for testing purposes (mail from your server will probably be marked as spam) or you can configure PHP to use your email account.
Your mail method is fine, your local server isn't. It is attempting to send the email but there is no SMTP server setup on your local server to send the email. You can install programs like Tomcat or Mercury which can handle the sending of the emails. You will just have to provide it some credentials to authenticate. I used my Gmail account's SMTP for example to send emails from my local server.
I am developing an application and have been testing the mail() function in PHP. The following works just fine on my local machine to send emails to myself, but as soon as I try to send it from the testing environment to my local machine, it silently fails.
I will still get the "Mail Sent" message, but no message is sent. I turned on the mail logging in the php.ini file, but even that doesn't seem to be populated after I refresh the page.
Again, the .php files and php.ini files are identical in both environments. Port 25 has been opened on the testing environment, and we are using a Microsoft Exchange server.
<?php
$to = "user#example.com";
$subject = "Test mail";
$message = "Hello! This is a simple email message.";
$from = "user#example.com";
$headers = "From:" . $from;
mail($to,$subject,$message,$headers);
echo "Mail Sent.";
?>
SMTP area of the php.ini file:
[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = exhange.server.org
; http://php.net/smtp-port
smtp_port = 25
; For Win32 only.
; http://php.net/sendmail-from
sendmail_from = user#example.com
First of all, even when mail fails, the echo "Mail Sent." will be shown. The php function mail() will return true on success and false on failure. Put it in an if and you can check if the mail has been sent:
if(mail($to,$subject,$message,$headers)) echo "Mail Sent.";
Should be working to check if the email was sent or not.
Regarding your problem that it is not working, I am not quite sure and I might be wrong, but some servers as of my experience want the \r\n behind each headerline.
$headers = "From:" . $from . "\r\n";
But as already said, I might be wrong and related to the examples on here, it is not necessary when using one headerline - http://php.net/manual/en/function.mail.php
When I am testing the mail function, I do not put any header information into the mail function, just $to, $subject, $message. You might give it a try. I really hate using the php mail function by myown, I always use a PHP mailer class.
Sorry if I couldn't answer to your real problem, that the email can not be sent. I hope you
Check in your PHP distro for PEAR and Mail.php. On the cmd line, "php -i" to find your resources. I believe PEAR and Mail.php is fairly common for distros over 5.2. I'm on a Mac and Linux server and prefer PEAR mail over the PHP mail function. Windows should be similar. Here is an example of sending multiple emails using PEAR Mail.
/** PEAR::MAIL
* PEAR::Mail only opens one mail socket for multiple emails sent
*/
require_once('/opt/local/lib/php/Mail.php');
$body = $_POST['message'];
//using sendmail on backend
$params['sendmail_path'] = '/usr/sbin/sendmail';
//using factory method
$mail_object =& Mail::factory('sendmail',$params);
//loop through selected users to send
for ($i=0;$i<count($recipients);$i++){
if (!empty($recipients[$i]['email'])&&($recipients[$i]['alt_email'])){
//concatinate email and alt_email
$address = $recipients[$i]['email'].",".$recipients[$i]['alt_email'];
}
else {
//only one user address
$address = $recipients[$i]['email'];
}
//send the mail instance
$mail_object->send($address,$headers,$body);
if (PEAR::isError($mail_object)) {print($mail_object->getMessage());}
} //close the for loop
Some time your hosting service providers are block outgoing SMTP Authentication. Please confirm with you hosting providers.
I wrote php code for use to contact us form
but I can not find free SMTP server to use it.
I Try to use SMTP Server For Gmail but I found this error.
Warning: mail() [function.mail]:
"sendmail_from" not set in php.ini or
custom "From:" header missing in
C:\www\htdocs\contactUs.php on line
25"
line 25 is :
mail ($to,$subject,$body,$headers);
statement that indicate using Gmail SMTP Server is :
ini_set("SMTP","smtp.gmail.com");
SO,can U help me ?:(
You need a From: [VALID EMAIL] header of the message when you send the message. Try doing something like this:
$headers = array(
'From: me#example.com',
'Mime-Type: text/plain; charset=utf-8',
);
$dest = 'some_user#example.com';
$subj = 'test';
$message = 'hello world';
mail($dest, $subj, $message, implode("\r\n", $headers));
Also, the mail function is meant to be used as a frontend to the mail daemon that's running on the same server the web server is running on. Since most *NIX boxes have both, it usually works.
What I would not recommend, however, is using some remote server to send your mail. It's much more efficient and reliable (not to mention looking more professional) to just have the same server send the message as the one that generated the message.
Setting up your own SMTP server is easy and free and more flexible than Gmail. Gmail WILL NOT send messages whose From: header does not match either the main account address or a connected address.
I have written a basic script for the mail functionality.
I am trying to run this script through WAMP server.
<?php
phpinfo();
$to = "mss#xyz.com";
$subject = "Test mail";
$message = "Hello! This is a simple email message.";
$from = "mohan.s#xyz.com";
$headers = "From: $from";
$res= mail($to,$subject,$message,$headers);
echo " $res Mail Sent.";
?>
I have set the SMTP, sendmail_from in the php.ini file .
It gives me the following error
Warning: mail() [function.mail]: Failed to connect to mailserver at
"mucse409.eu.xyz.com" port 25, verify your "SMTP" and "smtp_port"
setting in php.ini or use ini_set() in C:\wamp\www\email.php on line 9
Mail Sent.
I am able to ping the SMTP address from my machine. Please guide me.
Can you also send mail from this machine to this smtp server using some mail client like ms outlook or mozilla thunderbird?
I had a problem once that my provider block traffic directed at smtp ports outside due to virus infection, and I couldn't send mail because of this, but I could ping server and port.
Could be blocked by a firewall or some such.
See if you can open port 25 with telnet (If you don't have software for this, you can download putty)
Following this tutorial I was able to send mail link text.
Send email using Gmail and PHPMailer The new automatic update
generator is ready, it has been a long time since OCRALight has been
finished and little bit of this and that has been polished on the
update generation.
The process is fairly complex, it involves reverse-engineering,
data-mining, packaging, distribution and a lot o fighting with our
crappy Windows server that is between me and the final Linux
liberation.
Every step in the road has been automatized, one by one, every problem
has been solved and polished, now the final piece is in his place, the
automatic email generation. Now the updates will be made and send
everyday, even weekends and vacations.
If you are interested in the technical aspect keep reading:
How it has been done:
First of all, you need to have PHP with OpenSSL support, for Windows
you’ll need to Install PHP and carefully select OpenSSL in the
components list, if you already have PHP installed, don’t worry a
re-install will keep your configuration, and you’ll be able to select
OpenSSL.
Then download PHPMailer, and extract it near your main php
file.
You will need to have a Gmail account(obviously) I recommend you to
make a new one just for this, mainly because the configuration need to
be very precise, and you wouldn’t be able to use it freely without
loosing functionality or risking to break the configuration.
Configure your Gmail account to use POP mail, but not IMAP, ONLY POP,
just POP.
And now the code:
<?php
require(”PHPMailer/class.phpmailer.php”);
$update_emails = array(
‘Juan Perez’ => ‘Juan_Perez#jalisco.gob.mx’,
‘Francisco Garcia’ => ‘fgarcia#hotmail.com’,
‘Diana la del Tunel’ => ‘diana#gmail.com’
);
echo “\nSending Update Email\n”;
$mail = new PHPMailer(); // Instantiate your new class
$mail->IsSMTP(); // set mailer to use SMTP
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->Host = “smtp.gmail.com”; // specify main and backup server
$mail->SMTPSecure= ’ssl’; // Used instead of TLS when only POP mail is selected
$mail->Port = 465; // Used instead of 587 when only POP mail is selected
$mail->Username = “youremail#gmail.com”; // SMTP username, you could use your google apps address too.
$mail->Password = “yaourextremelynotlamepassword”; // SMTP password
$mail->From = “youremail#gmail.com”; //Aparently must be the same as the UserName
$mail->FromName = “Your name”;
$mail->Subject = ‘The subject’;
$mail->Body = “The body of your message”;
foreach ($update_emails as $name => $email) {
$mail->AddBcc($email, $name);
}
if(!$mail->Send())
{
echo “There was an error sending the message:” . $mail->ErrorInfo;
exit;
}
echo “Done…\n”;
?>
In this code I send the email to a group of people, thus I use the
“Bcc:” field instead of the “To:” one, to add a “To:” you would use
AddAddress($email, $name).
A possible upgrade would be to use a MySQL database to store the
addresses, and provide a web interface to add and remove
them. for the moment, this is enough.
Soo remember:
PHP with OpenSSL; PHPMailer; Create a Gmail Account; Activate POP Host:
smtp.gmail.com; SMTPAuth=true; SMTPSEcure=ssl; Port: 465; User with Domain;
Password; $Mail->send();