I have an Amazon EC2 instance running with RH/Linux. My problem is php mail() function which is not working although I can send mail with sendmail from command line.
I run this command. # telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
XXXXX
My php.ini setting is
mail function]
SMTP = localhost
smtp_port = 25
sendmail_path = /usr/sbin/sendmail -t -i
mail.add_x_header = On
I can't fingure out whats wrong. I am not getting any php mail error. I don't get any email as well. What could the problem be?
Sending mail on EC2 is notoriously difficult. Most of the EC2 IP addresses are in spamming blacklists. This, combined with PHP mail()'s terrible error reporting results in a pretty horrible experience.
You'll want to use Amazon Simple Email Service in combination with EC2. They recently added an SMTP service, meaning you can use any standards-compliant PHP mailing library to send mails.
I personally recommend Swiftmailer for this task.
Related
I keep getting this error when I try to send an e-mail in PHP:
Warning: mail() [function.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 C:\wamp\www\dressoholic\register.php on line 50
my php.ini looks like this:
[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = localhost
; http://php.net/smtp-port
smtp_port = 25
; For Win32 only.
; http://php.net/sendmail-from
sendmail_from = you#yoursite.com
I'm using my laptop as a server.. What am I doing wrong? Thanks.
You need to be running a mail server locally.
If this is Unix, enable sendmail
If this is Windows install the Simple Mail Transfer Server (not sure if the name is correct) component of IIs. E.g. for windows 2003 follow this: http://msdn.microsoft.com/en-us/library/8b83ac7t.aspx
For sending mails using php mail function is used.
But mail function requires SMTP server for sending emails.
we need to mention SMTP host and SMTP port in php.ini file.
Upon successful configuration of SMTP server mails will be sent successfully sent through php scripts.
On windows, nearly all AMPP (Apache,MySQL,PHP,PHPmyAdmin) packages don't include a mail server (but nearly all naked linuxes do have!). So, when using PHP under windows, you need to setup a mail server!
Imo the best and most simple tool ist this: http://smtp4dev.codeplex.com/
SMTP4Dev is a simple one-file mail server tool that does collect the mails it send (so it does not really sends mail, it just keeps them for development). Perfect tool.
If you are running your application just on localhost and it is not yet live, I believe it is very difficult to send mail using this.
Once you put your application online, I believe that this problem should be automatically solved. But i think ini_set() helps you to change the values in php.ini during run time.
First of all, you aren't forced to use an SMTP on your localhost, if you change that localhost entry into the DNS name of the MTA from your ISP provider (who will let you relay mail) it will work right away, so no messing about with your own email service. Just try to use your providers SMTP servers, it will work right away.
PHP mail function can send email in 2 scenarios:
a. Try to send email via unix sendmail program
At linux it will exec program "sendmail", put all params to sendmail and that all.
OR
b. Connect to mail server (using smtp protocol and host/port/username/pass from php.ini) and try to send email.
If php unable to connect to email server it will give warning (and you see such workning in your logs)
To solve it, install smtp server on your local machine or use any available server. How to setup / configure smtp you can find on php.net
Change SMTP=localhost to SMTP=smtp.gmail.com
I've a dedicated server for sending emails with different domain and I'm running nginx and php on the ubuntu server. I've configured ssmtp to send emails which is working fine from terminal using echo from terminal. I want to use php mail function to send mails from the server and I'm using ssmtp. How can I do that? I've made changes in php.ini file in php fpm directory as follows:
smtp_port = 25
sendmail_from = noreply#instaclasses.info
sendmail_path = /usr/sbin/ssmtp
mail.add_x_header = On
I need to configure the php mail function so that any mail sent from mail function is sent from default smtp server configured already.
You can use PHPMailer - this very usefull library. In this all working from all external servers (inc. GMail).
I keep getting this error when I try to send an e-mail in PHP:
Warning: mail() [function.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 C:\wamp\www\dressoholic\register.php on line 50
my php.ini looks like this:
[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = localhost
; http://php.net/smtp-port
smtp_port = 25
; For Win32 only.
; http://php.net/sendmail-from
sendmail_from = you#yoursite.com
I'm using my laptop as a server.. What am I doing wrong? Thanks.
You need to be running a mail server locally.
If this is Unix, enable sendmail
If this is Windows install the Simple Mail Transfer Server (not sure if the name is correct) component of IIs. E.g. for windows 2003 follow this: http://msdn.microsoft.com/en-us/library/8b83ac7t.aspx
For sending mails using php mail function is used.
But mail function requires SMTP server for sending emails.
we need to mention SMTP host and SMTP port in php.ini file.
Upon successful configuration of SMTP server mails will be sent successfully sent through php scripts.
On windows, nearly all AMPP (Apache,MySQL,PHP,PHPmyAdmin) packages don't include a mail server (but nearly all naked linuxes do have!). So, when using PHP under windows, you need to setup a mail server!
Imo the best and most simple tool ist this: http://smtp4dev.codeplex.com/
SMTP4Dev is a simple one-file mail server tool that does collect the mails it send (so it does not really sends mail, it just keeps them for development). Perfect tool.
If you are running your application just on localhost and it is not yet live, I believe it is very difficult to send mail using this.
Once you put your application online, I believe that this problem should be automatically solved. But i think ini_set() helps you to change the values in php.ini during run time.
First of all, you aren't forced to use an SMTP on your localhost, if you change that localhost entry into the DNS name of the MTA from your ISP provider (who will let you relay mail) it will work right away, so no messing about with your own email service. Just try to use your providers SMTP servers, it will work right away.
PHP mail function can send email in 2 scenarios:
a. Try to send email via unix sendmail program
At linux it will exec program "sendmail", put all params to sendmail and that all.
OR
b. Connect to mail server (using smtp protocol and host/port/username/pass from php.ini) and try to send email.
If php unable to connect to email server it will give warning (and you see such workning in your logs)
To solve it, install smtp server on your local machine or use any available server. How to setup / configure smtp you can find on php.net
Change SMTP=localhost to SMTP=smtp.gmail.com
I have a load balancer that also works as a mail server.
I want the clusters to use the load balancers mail server as their default mail system for the PHP mail() function
Clusters Settings
PHP
The settings on the php.ini file look like this:
[mail function]
SMTP = mail.email.info
smtp_port = 25
sendmail_from = me#example.com
sendmail_path = /usr/sbin/sendmail -t -i
Load Balancer Settings
Postfix
I have added this to the main.cf:
myhostname = mail.email.info
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.1.71 192.168.0.*
as the clusters are on the 192.168.0.* subnet.
The mail server on the LB is working perfectly. I am using it for lots of virtual hosts and it is set up on lots of mail software (for example sparrow) So this is not likely to be an issue with it, but more likely to be to do with the permissions of it.
When running the PHP script on the cluster:
<?php
mail("test#example.com","subject","msg");
?>
Nothing is happening. Why?!
Please do not be afraid to ask for more info.
According to the PHP documentation, the smtp_port and other options are only used on Windows. Generally, PHP's mail() is not really made for using a remote MTA.
I would recommend using a third party library such as SwiftMailer. Not only can you dispatch your mail to a remote MTA, but you get some valuable extras, too:
RFC-compliant mails,
attachments and multipart mails,
S/MIME support for signing and encrypting e-mails,
intuitive object-oriented APIs,
and many more.
I keep getting this error when I try to send an e-mail in PHP:
Warning: mail() [function.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 C:\wamp\www\dressoholic\register.php on line 50
my php.ini looks like this:
[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = localhost
; http://php.net/smtp-port
smtp_port = 25
; For Win32 only.
; http://php.net/sendmail-from
sendmail_from = you#yoursite.com
I'm using my laptop as a server.. What am I doing wrong? Thanks.
You need to be running a mail server locally.
If this is Unix, enable sendmail
If this is Windows install the Simple Mail Transfer Server (not sure if the name is correct) component of IIs. E.g. for windows 2003 follow this: http://msdn.microsoft.com/en-us/library/8b83ac7t.aspx
For sending mails using php mail function is used.
But mail function requires SMTP server for sending emails.
we need to mention SMTP host and SMTP port in php.ini file.
Upon successful configuration of SMTP server mails will be sent successfully sent through php scripts.
On windows, nearly all AMPP (Apache,MySQL,PHP,PHPmyAdmin) packages don't include a mail server (but nearly all naked linuxes do have!). So, when using PHP under windows, you need to setup a mail server!
Imo the best and most simple tool ist this: http://smtp4dev.codeplex.com/
SMTP4Dev is a simple one-file mail server tool that does collect the mails it send (so it does not really sends mail, it just keeps them for development). Perfect tool.
If you are running your application just on localhost and it is not yet live, I believe it is very difficult to send mail using this.
Once you put your application online, I believe that this problem should be automatically solved. But i think ini_set() helps you to change the values in php.ini during run time.
First of all, you aren't forced to use an SMTP on your localhost, if you change that localhost entry into the DNS name of the MTA from your ISP provider (who will let you relay mail) it will work right away, so no messing about with your own email service. Just try to use your providers SMTP servers, it will work right away.
PHP mail function can send email in 2 scenarios:
a. Try to send email via unix sendmail program
At linux it will exec program "sendmail", put all params to sendmail and that all.
OR
b. Connect to mail server (using smtp protocol and host/port/username/pass from php.ini) and try to send email.
If php unable to connect to email server it will give warning (and you see such workning in your logs)
To solve it, install smtp server on your local machine or use any available server. How to setup / configure smtp you can find on php.net
Change SMTP=localhost to SMTP=smtp.gmail.com