Conflict between PhpMailer and phpmail

Hi Am using the following code to send two different emails with the same form.  am using phpmailer to send the mail with attachment and phpmail to send without the attachment to two different recepients.

This code works fine when the size of the attachment is smaill like 3-10kb but if the size is a bigger one something like 245kb only the first mail goes through and second mail doesn't.

Please let me know what is wrong here.
$uploaddir = 'c:\\ABC\\';
$uploadfile = $uploaddir . basename($_FILES['file']['name']);
move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile); 
 
$mail = new PHPMailer();
 
$mail->IsSMTP();                      
$mail->Host = "X.X.X.X"; 
 
 
$mail->From = $_POST['email'];
$mail->FromName = "Submissioin";
$mail->AddAddress("abc@abc.com");                 
                              
$mail->AddAttachment($uploadfile); 
$mail->IsHTML(true);        
$mail->Subject = "Submission Form";
 
$mail_body = "Test mail";
$mail->Body    = $mail_body;
 
 
if(!$mail->Send())
{
   echo "Message could not be sent. <p>";
   echo "Mailer Error: " . $mail->ErrorInfo;
   exit;
}
else
{
$mail->ClearAddresses();
$mail->ClearAttachments();
 
//sending email using phpmailer===============================================================
$Name =  $_POST['fName'] . ' ' . $_POST['Lname']; 
$email = $_POST['email']; 
$recipient = "xyz@xyz.com"; 
$mail_body = "Attachment recieved";                       
$subject = "Submission Form"; //subject 
$header = "From: ". $Name . " <" . $email . ">\r\n"; //optional headerfields  
$mail_body = strip_tags( preg_replace('#<br\s*/?>#i',"\n",$mail_body) );
mail($recipient, $subject, $mail_body, $header); 
 
//======================================================================
 
 
header("Location: http://somewhere.ca.com/partnerescalation/reqkd.php");
exit();}

Open in new window

Shiva_KumarAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

wildzeroCommented:
Hi there,

This block of code here

if(!$mail->Send())
{
   echo "Message could not be sent. <p>";
   echo "Mailer Error: " . $mail->ErrorInfo;
   exit;
}
else
{

Means that it's only ever going to send 1 email. It will try and do PHPMailer, and only if that fails it will use the PHP Mail. If you want it to always send two emails then you can use this. The code below will not stop on errors.

You should also check and make your capitilization consistant
$Name =  $_POST['fName'] . ' ' . $_POST['Lname'];
is it fName or Fname? Lname or lName


$uploaddir = 'c:\\ABC\\';
$uploadfile = $uploaddir . basename($_FILES['file']['name']);
move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile); 
 
$mail = new PHPMailer();
 
$mail->IsSMTP();                      
$mail->Host = "X.X.X.X"; 
 
 
$mail->From = $_POST['email'];
$mail->FromName = "Submissioin";
$mail->AddAddress("abc@abc.com");                 
                              
$mail->AddAttachment($uploadfile); 
$mail->IsHTML(true);        
$mail->Subject = "Submission Form";
 
$mail_body = "Test mail";
$mail->Body    = $mail_body;
 
$mail->Send();
$mail->ClearAddresses();
$mail->ClearAttachments();
 
//sending email using phpmailer=================================
$Name =  $_POST['fName'] . ' ' . $_POST['Lname']; 
$email = $_POST['email']; 
$recipient = "xyz@xyz.com"; 
$mail_body = "Attachment recieved";                       
$subject = "Submission Form"; //subject 
$header = "From: ". $Name . " <" . $email . ">\r\n"; //optional headerfields  
$mail_body = strip_tags( preg_replace('#<br\s*/?>#i',"\n",$mail_body) );
mail($recipient, $subject, $mail_body, $header); 
 
//======================================================================
 
 
header("Location: http://somewhere.ca.com/partnerescalation/reqkd.php");
exit();

Open in new window

0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Marcus BointonCommented:
> Means that it's only ever going to send 1 email. It will try and do PHPMailer, and only if that fails it will use the PHP Mail.

That's not true. There's a ! in that if that means it will only exit if it fails to send.

It's a complete mystery to me why you'd use PHPMailer to send the first one but not the second. Using mail() directly is generally just asking for trouble, as you're seeing. I'm not going to debug that code because the right fix is to use PHPMailer to send that as well.
0
Shiva_KumarAuthor Commented:
Thank you, it worked
0
Marcus BointonCommented:
What worked? In the selected answer, the logic is completely wrong and it gets around the problem of there being an error by removing the error checking!
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
PHP

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.