I am trying to send Mail through PHP Pear Mail package, I have 2 scenarios here , In first scenario mail is sending properly without any error but in second scenario I am getting error message .
Scenario 1 :
File Name : testmail.php
<?php
require_once "Mail.php";
$from = "erp#askspidy.com";
$to = "support#askspidy.com";
$subject = "Landing Page Enquiry From -";
$body = "Hello just testing";
$host = "ssl://mail.askspidy.com";
$port = "465";
$username = "support#askspidy.com";
$password = "askspidy#1234";
$headers = array ('From' => $from,
'To' => $to,
'Subject' => $subject,
'MIME-Version' => 1,
'Content-type' => 'text/html;charset=iso-8859-1'
);
$smtp = Mail::factory('smtp',
array ('host' => $host,
'port' => $port,
'auth' => true,
'username' => $username,
'password' => $password));
$mail = $smtp->send($to, $headers, $body);
if (PEAR::isError($mail)) {
echo("<p>" . $mail->getMessage() . "</p>");
} else {
echo("<p>Message successfully sent!</p>");
}
?>
If I directly run file in url then mail is sent without any errors .
Scenario 2 :
File Name : sendmail.php
<?php
function send_mail($subject,$body)
{
require_once "Mail.php";
$from = "erp#askspidy.com";
$to = "support#askspidy.com";
$host = "ssl://mail.askspidy.com";
$port = "465";
$username = "support#askspidy.com";
$password = "askspidy#1234";
$headers = array ('From' => $from,
'To' => $to,
'Subject' => $subject,
'MIME-Version' => 1,
'Content-type' => 'text/html;charset=iso-8859-1'
);
$smtp = Mail::factory('smtp',
array ('host' => $host,
'port' => $port,
'auth' => true,
'username' => $username,
'password' => $password));
$mail = $smtp->send($to, $headers, $body);
}
?>
Now i am calling this send_mail function from different file like this
File Name : service/process.php
<?php
require_once("../sendmail.php");
$subject="Landing page enquiry";
$email_body="Hello Just Testing! ";
send_mail($subject,$email_body);
?>
When this file is executed into browser , i am getting error message on line
send_mail($subject,$email_body);
Error :
Warning: include_once(Net/SMTP.php): failed to open stream: No such file or directory in /usr/local/lib/php/Mail/smtp.php on line 348
Warning: include_once(): Failed opening 'Net/SMTP.php' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php') in /usr/local/lib/php/Mail/smtp.php on line 348
Fatal error: Class 'Net_SMTP' not found in /usr/local/lib/php/Mail/smtp.php on line 349
In Scenario 1 everything is working fine then why in scenario 2 I am getting this error, i guess there is problem with path but i am not sure what should be the path and where should i include that.
Folder Structure :
Include code in file Mail/smtp.php
require_once "Net/SMTP.php";
Note: I have manually installed PEAR Package in Cpanel account and done no settings in php.ini file
Added dirname(FILE) to the path name everywhere in code and it worked
require_once dirname(__FILE__)."/Net/SMTP.php";
You can use __DIR__ for the directory path for current file
require_once __DIR__ . "/Net/SMTP.php";
Related
I have an HTML form for a website hosted on GoDaddy, I'm trying to allow users to use a contact form to contact me via my website, I've created an smtp PHP script however it doesn't seem to work, the script runs and the page reloads but I haven't received any income mail for this test.
<?php
include('Mail.php');
$host = 'localhost';
$username = '******#***********.com';
$password = '*******';
$subject = 'Test';
$from = '******#*********.com';
$to = '******.*******#***.com';
$cc = 'person to CC';
$recipients = $to . ", " . $cc; //
$headers = array ('From' => $from,
'To' => $to,
'Cc' => $cc,
'Subject' => $subject);
$smtp = Mail::factory('smtp',
array ('host' => $host,
'auth' => false,
'username' => $username,
'password' => $password,
'port' => '25'
));
$mail = $smtp->send($recipients, $headers, $body);
if ( PEAR::isError($mail) ) {
echo("<p>Error sending mail:<br/>" . $mail->getMessage() . "</p>");
} else {
echo("<p>Message sent.</p>");
}
header("Location:contact-us.html");
?>
I need my php script to email me some variables which is parsed to it.
I receive the email properly when any text is passed:
mypage.php?url=hello
But I do not receive the email if an url is passed:
mypage.php?url=http://www.google.com
I searched for hours but didn't found any way to do it.
This is the php script:
<?php
// Pear Mail Library
require_once "Mail.php";
$name = $_POST['name'];
$url = $_POST['url'];
$from = '<noreply#website.com>';
$to = '<me#gmail.com>';
$subject = 'Hi!';
$body = '
Name: '.$name.'
The url is: '.$url.'
';
$headers = array(
'From' => $from,
'To' => $to,
'Subject' => $subject
);
$smtp = Mail::factory('smtp', array(
'host' => 'ssl://smtp.gmail.com',
'port' => '465',
'auth' => true,
'username' => 'mail#gmail.com',
'password' => 'password'
));
$mail = $smtp->send($to, $headers, $body);
if (PEAR::isError($mail)) {
echo('<p>' . $mail->getMessage() . '</p>');
} else {
echo('<h1>Message successfully sent!</h1>');
}
?>
When an actual url is parsed, I don't recive the email but also no error is shown.
As #Xorifelse said, I used addslashes function and it worked. I got the email properly with the url in it.
Below is the working script:
<?php
// Pear Mail Library
require_once "Mail.php";
$name = $_POST['name'];
$url = $_POST['url'];
$from = '<noreply#website.com>';
$to = '<me#gmail.com>';
$subject = 'Hi!';
$body = '
Name: '.addslashes($name).'
The url is: '.addslashes($url).'
';
$headers = array(
'From' => $from,
'To' => $to,
'Subject' => $subject
);
$smtp = Mail::factory('smtp', array(
'host' => 'ssl://smtp.gmail.com',
'port' => '465',
'auth' => true,
'username' => 'mail#gmail.com',
'password' => 'password'
));
$mail = $smtp->send($to, $headers, $body);
if (PEAR::isError($mail)) {
echo('<p>' . $mail->getMessage() . '</p>');
} else {
echo('<h1>Message successfully sent!</h1>');
}
?>
Sorry for my English.
I’m trying to sent e-mai via Mail pear packet:
require_once "Mail.php";
$from = '<frommail#gmail.com>';
$to = '<tomail#vacant.lv>';
$subject = 'Hi!';
$body = "Hi,\n\nHow are you?";
$headers = array(
'From' => $from,
'To' => $to,
'Subject' => $subject
);
$smtp = Mail::factory('smtp', array(
'host' => 'ssl://smtp.gmail.com',
'port' => '465',
'auth' => true,
'username' => 'frommail#gmail.com',
'password' => 'pass'
));
$mail = $smtp->send($to, $headers, $body);
if (PEAR::isError($mail)) {
echo('<p>' . $mail->getMessage() . '</p>');
} else {
echo('<p>Message successfully sent!</p>');
}
//email addresses are changed
But in result I have error:
Failed to connect to ssl://smtp.gmail.com:465 [SMTP: Failed to connect socket: Permission denied (code: -1, response: )]
Openssl is enabled.
Thanks you.
At some stage you might want to send an HTML email, so you would also need to use the Mail/mime package that is provided by PEAR. I've included that as well.
<?php
require_once "Mail.php";
require_once "Mail/mime.php";
$from = "<noreply#example.com>";
$to = "fred#example.com"; // the email address
$host = "smtp.gmail.com";
$port = "587";
// use the first example username if sending from gmail, as full email address
// is required
$username = "fred.flintstone#gmail.com";
$username = "fred";
$password = "secure";
$headers = array ('From' => $from,'To' => $to,'Subject' => $subject);
$mailbody = "<html><body>...</body></html>";
$mime = new Mail_mime();
$mime->setHTMLBody($mailbody);
$body = $mime->get();
$headers = $mime->headers($headers);
$smtp = Mail::factory(
'smtp',array (
'host' => $host,
'auth' => true,
'username' => $username,
'password' => $password,
'port' => $port
)
);
// send email
$mail = $smtp->send($to, $headers, $body);
if (PEAR::isError($mail)) {
echo($mail->getMessage());
} else {
echo "<b><Center>Succesfully sent email to</b>$to</center>";
}
when I try to send mail with php I get this error:
Fatal error: Class 'Mail' not found in C:\Program Files (x86)
\Apache Software Foundation\Apache2.2\htdocs\pn\mailtest.php
on line 10
Here is my PHP code:
<?php
$from="sjoseph#seisystems.com";
$to="dianahelene#gmail.com";
$subject="testmail";
$host="Sei-mail01";
$headers = array ('From' => $from, 'To' => $to, 'Subject' => $subject);
$smtp = Mail::factory('smtp', array ('host' => $host, 'auth' => false));
$mail = $smtp->send($to, $headers, $message);
?>
Why is
You need to load the Mail class with require_once after the <?php tags:
require_once 'Mail.php';
I am trying to edit PHP code that sends an email using PEAR. The below code has worked on the company server, but doesn't seem to work on my computer when I am using localhost.
$headers = array ('From' => $from,
'To' => $to,
'Subject' => $subject);
//Send the Actual Mail
$smtp = Mail::factory('smtp',
array ( 'host' => $host,
'auth' => false,
'username' => $username,
'password' => $password));
$mail = $smtp->send($to, $headers, $body);
if (PEAR::isError($mail))
{
echo($mail->getMessage());
}
else
{
echo("<p>Message successfully sent!<p>");
}
The items in $headers are defined earlier, don't worry.
The error returned by echo($mail->getMessage()); is as follows:
Failed to connect to localhost:25 [SMTP: Failed to connect socket: Connection refused (code: -1, response: )]
I'm on a machine running Ubuntu. Not sure if any other information is needed.