Post by OCWEB » Sun Mar 21, 2010 3:47 pm

This Open Source shop is the best I have ever used. 20 minutes had it installed and all but configured. What has killed me is the next 5 hours trying to get an email to display text at the clients end.

I have read all that I can and Googled the monkey out of my self but what gives. I even signed up to the demo site to see if the acceptance email was legible, and it was.

So to be precise....

With SMTP configuration on the email server settings emails arrive from Contact, Sale or Newsletter/Group with no text. I can look at the source with Thunderbird and see the text. Roundcube on the webmail has the same issue.

Any help is appreciated.....such good, good software otherwise. I even have the Aust Post module working...

Newbie

Posts

Joined
Sun Mar 21, 2010 2:20 pm

Post by visitor » Tue Mar 30, 2010 12:37 am

I see the same issue here. Dont matter if this is a pure text or html mail.
Text and attachments are send complete but not show up in google mail and also not thunderbird.
Now i figured out that if the mail is going to an Exchange Server i can see on the client side with Outlook and Outlook Web Access all the content.
Looks like the Mail is going out a bit malformed.

Newbie

Posts

Joined
Tue Mar 23, 2010 3:20 am

Post by Daniel » Tue Mar 30, 2010 12:47 am

it works fine for me if I send it to my gmail account.

post the full message including headers here if you can.

OpenCart®
Project Owner & Developer.


User avatar
Administrator

Posts

Joined
Fri Nov 03, 2006 6:57 pm

Post by visitor » Wed Mar 31, 2010 7:39 pm

I do some further tests. And its looks like it depends on the Testenviroment. For testing i use XAMPP on Windows 7 with an smtp server from Google. In this case i get empty looking E-Mail. If i use the the same Test enviroment with an company intern SMTP Server then i can see also in Google Mail all E-Mail as it should look like.

Newbie

Posts

Joined
Tue Mar 23, 2010 3:20 am

Post by sjsjsj » Mon Apr 12, 2010 7:46 am

Same problem. LAMPP on Linux host. SMTP via Gmail.

Newbie

Posts

Joined
Thu Dec 31, 2009 7:10 am

Post by chitown » Wed Oct 13, 2010 2:34 am

i have the same issue. it is a show stopper. any solution out there?

Newbie

Posts

Joined
Wed Oct 13, 2010 2:32 am

Post by chitown » Thu Oct 14, 2010 4:25 am

turns out the customer order email looks good in gmail, but is blank (except logo) in mail.app (mac).

funny, because the order confirmation email that i get (starts with "You have received an order.") looks good in both gmail and mail.app.

i looked at the source code in both received emails and noticed something that could be the problem, but have no idea how to fix.

email header of customer email

Code: Select all

X-Mailer: PHP/5.2.9
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="----=_NextPart_487dbe0674f1a9a94e86d314fd930c55"
------=_NextPart_487dbe0674f1a9a94e86d314fd930c55
Content-Type: multipart/alternative; boundary="----=_NextPart_487dbe0674f1a9a94e86d314fd930c55_alt"

------=_NextPart_487dbe0674f1a9a94e86d314fd930c55_alt
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
email header of store owner order notification

Code: Select all

X-Mailer: PHP/5.2.9
MIME-Version: 1.0
Content-Type: multipart/mixed;
 boundary="----=_NextPart_7f9e335e1084c824f9709850e206e64a"

------=_NextPart_7f9e335e1084c824f9709850e206e64a
Content-Type: multipart/alternative;
	boundary="----=_NextPart_7f9e335e1084c824f9709850e206e64a_alt"

------=_NextPart_7f9e335e1084c824f9709850e206e64a_alt
Content-Type: text/plain;
	charset=utf-8
Content-Transfer-Encoding: 8bit
i noticed that in the first code block "utf-8" is in quotes, but in the second block there is no quotes. i suspect that there must be a typo/error on the system/library/mail.php page to cause the quotes to show.

anyone have any ideas on how to fix so the quotes don't show?

my hope is that once it is fixed it will render correctly in all email applications.

Newbie

Posts

Joined
Wed Oct 13, 2010 2:32 am

Post by maccadon » Fri Oct 15, 2010 4:24 pm

Could anybody please help us with this.
I'm willing to do a donation to whomever fixes this.

I have the same solution.
I use a Google Apps account for sending the mails.
In a webbased gmail clien i receive the email correct but in Thunderbird/Postbox it's blank.

Active Member

Posts

Joined
Thu Aug 05, 2010 9:57 pm

Newbie

Posts

Joined
Wed Sep 29, 2010 2:58 pm

Post by chitown » Fri Oct 15, 2010 8:12 pm

@peter72, your suggestion at the referenced post worked for me. problem solved. thanks much!

Newbie

Posts

Joined
Wed Oct 13, 2010 2:32 am

Post by maccadon » Fri Oct 15, 2010 10:26 pm

Peter's solution works! Thanks!

Active Member

Posts

Joined
Thu Aug 05, 2010 9:57 pm

Post by JeffBeck35 » Thu Jun 30, 2011 4:38 pm

Hello All,

I have a problem.

(version OC 1.4.9.4)

My email program mozilla thunderbird and postbox these emails come in "Blank." ( Just text - without image )

http://imageshack.us/photo/my-images/801/20670739.png/

Waiting for valuable answers.

Thanks.
Jeff

Newbie

Posts

Joined
Wed Jan 27, 2010 7:17 pm

Post by JeffBeck35 » Fri Jul 01, 2011 6:27 am

Yes Yes Yes!

I Solved Problem! :)

vuuuuuvvvvvvvv! O0

Solved :

1- OC Version 1.4.9.4

2 - Mail Php Files; ( system/library/mail.php )

16. - 17.

Code: Select all

	public $newline = "\n";
	public $crlf = "\r\n";
37. - 38.

Code: Select all

  public function setSubject($subject) {
      $this->subject = '=?UTF-8?B?' . base64_encode($subject) . '?=';
   }
105.106.

Code: Select all

		$header .= 'Content-Transfer-Encoding: 8bit' . $this->newline;		
		$header .= $this->newline; 
Must be...

And my Mail.php file :

Code: Select all

<?php
final class Mail {
	protected $to;
	protected $from;
	protected $sender;
	protected $subject;
	protected $text;
	protected $html;
	protected $attachments = array();
	public $protocol = 'mail';
	public $hostname;
	public $username;
	public $password;
	public $port = 25;
	public $timeout = 5;
	public $newline = "\n";
	public $crlf = "\r\n";
	public $verp = FALSE;
	public $parameter = '';

	public function setTo($to) {
		$this->to = $to;
	}

	public function setFrom($from) {
		$this->from = $from;
	}

	public function addheader($header, $value) {
		$this->headers[$header] = $value;
	}

	public function setSender($sender) {
		$this->sender = html_entity_decode($sender);
	}

  public function setSubject($subject) {
      $this->subject = '=?UTF-8?B?' . base64_encode($subject) . '?=';
   }

	public function setText($text) {
		$this->text = $text;
	}

	public function setHtml($html) {
		$this->html = $html;
	}

	public function addAttachment($file, $filename = '') {
		if (!$filename) {
			$filename = basename($file);
		}

		$this->attachments[] = array(
			'filename' => $filename,
			'file'     => $file
		);
	}

	public function send() {
		if (!$this->to) {
			exit('Error: E-Mail to required!');
		}

		if (!$this->from) {
			exit('Error: E-Mail from required!');
		}

		if (!$this->sender) {
			exit('Error: E-Mail sender required!');
		}

		if (!$this->subject) {
			exit('Error: E-Mail subject required!');
		}

		if ((!$this->text) && (!$this->html)) {
			exit('Error: E-Mail message required!');
		}

		if (is_array($this->to)) {
			$to = implode(',', $this->to);
		} else {
			$to = $this->to;
		}

		$boundary = '----=_NextPart_' . md5(time());

		$header = '';

		if ($this->protocol != 'mail') {
			$header .= 'To: ' . $to . $this->newline;
			$header .= 'Subject: ' . $this->subject . $this->newline;
		}
		
		$header .= 'Date: ' . date("D, d M Y H:i:s O") . $this->newline;
		//$header .= 'From: "' . $this->sender . '" <' . $this->from . '>' . $this->newline;
		//$header .= 'From: ' . $this->sender . '<' . $this->from . '>' . $this->newline;
		$header .= 'From: ' . '=?UTF-8?B?'.base64_encode($this->sender).'?=' . '<' . $this->from . '>' . $this->newline;
		$header .= 'Reply-To: ' . $this->sender . '<' . $this->from . '>' . $this->newline;
		$header .= 'Return-Path: ' . $this->from . $this->newline;
		$header .= 'X-Mailer: PHP/' . phpversion() . $this->newline;
		$header .= 'MIME-Version: 1.0' . $this->newline;
		$header .= 'Content-Type: multipart/mixed; boundary="' . $boundary . '"' . $this->newline;
		$header .= 'Content-Transfer-Encoding: 8bit' . $this->newline;		
		$header .= $this->newline; 

		if (!$this->html) {
			$message  = '--' . $boundary . $this->newline;
			$message .= '' . $this->newline;
			$message .= '' . $this->newline . $this->newline;
			$message .= $this->text . $this->newline;
		} else {
			$message  = '--' . $boundary . $this->newline;
			$message .= 'Content-Type: multipart/alternative; boundary="' . $boundary . '_alt"' . $this->newline . $this->newline;
			$message .= '--' . $boundary . '_alt' . $this->newline;
			$message .= 'Content-Type: text/plain; charset="utf-8"' . $this->newline;
			$message .= 'Content-Transfer-Encoding: 8bit' . $this->newline;

			if ($this->text) {
				$message .= $this->text . $this->newline;
			} else {
				$message .= '' . $this->newline;
			}

			$message .= '--' . $boundary . '_alt' . $this->newline;
			$message .= 'Content-Type: text/html; charset="utf-8"' . $this->newline;
			$message .= 'Content-Transfer-Encoding: 8bit' . $this->newline . $this->newline;
			$message .= $this->html . $this->newline;
			$message .= '--' . $boundary . '_alt--' . $this->newline;
		}

foreach ($this->attachments as $attachment) { 
         if (file_exists($attachment['file'])) {
            $handle = fopen($attachment['file'], 'r');
            $content = fread($handle, filesize($attachment['file']));
      
            fclose($handle); 
      
            $message .= '--' . $boundary . $this->newline;
            $message .= 'Content-Type: application/octetstream' . $this->newline;   
            $message .= 'Content-Transfer-Encoding: base64' . $this->newline;
            $message .= 'Content-Disposition: attachment; filename="' . basename($attachment['filename']) . '"' . $this->newline;
            $message .= 'Content-ID: <' . basename($attachment['filename']) . '>' . $this->newline . $this->newline;
            $message .= chunk_split(base64_encode($content));
         }
      }

		$message .= '--' . $boundary . '--' . $this->newline;

		if ($this->protocol == 'mail') {
			ini_set('sendmail_from', $this->from);

			if ($this->parameter) {
				mail($to, '=?UTF-8?B?'.base64_encode($this->subject).'?=', $message, $header, $this->parameter);
			} else {
				mail($to, '=?UTF-8?B?'.base64_encode($this->subject).'?=', $message, $header);
			}

		} elseif ($this->protocol == 'smtp') {
			$handle = fsockopen($this->hostname, $this->port, $errno, $errstr, $this->timeout);

			if (!$handle) {
				error_log('Error: ' . $errstr . ' (' . $errno . ')');
			} else {
				if (substr(PHP_OS, 0, 3) != 'WIN') {
					socket_set_timeout($handle, $this->timeout, 0);
				}

				while ($line = fgets($handle, 515)) {
					if (substr($line, 3, 1) == ' ') {
						break;
					}
				}

				if (substr($this->hostname, 0, 3) == 'tls') {
					fputs($handle, 'STARTTLS' . $this->crlf);

					while ($line = fgets($handle, 515)) {
						$reply .= $line;

						if (substr($line, 3, 1) == ' ') {
							break;
						}
					}

					if (substr($reply, 0, 3) != 220) {
						error_log('Error: STARTTLS not accepted from server!');
					}
				}

				if (!empty($this->username)  && !empty($this->password)) {
					fputs($handle, 'EHLO ' . getenv('SERVER_NAME') . $this->crlf);

					$reply = '';

					while ($line = fgets($handle, 515)) {
						$reply .= $line;

						if (substr($line, 3, 1) == ' ') {
							break;
						}
					}

					if (substr($reply, 0, 3) != 250) {
						error_log('Error: EHLO not accepted from server!');
					}

					fputs($handle, 'AUTH LOGIN' . $this->crlf);

					$reply = '';

					while ($line = fgets($handle, 515)) {
						$reply .= $line;

						if (substr($line, 3, 1) == ' ') {
							break;
						}
					}

					if (substr($reply, 0, 3) != 334) {
						error_log('Error: AUTH LOGIN not accepted from server!');
					}

					fputs($handle, base64_encode($this->username) . $this->crlf);

					$reply = '';

					while ($line = fgets($handle, 515)) {
						$reply .= $line;

						if (substr($line, 3, 1) == ' ') {
							break;
						}
					}

					if (substr($reply, 0, 3) != 334) {
						error_log('Error: Username not accepted from server!');
					}

					fputs($handle, base64_encode($this->password) . $this->crlf);

					$reply = '';

					while ($line = fgets($handle, 515)) {
						$reply .= $line;

						if (substr($line, 3, 1) == ' ') {
							break;
						}
					}

					if (substr($reply, 0, 3) != 235) {
						error_log('Error: Password not accepted from server!');
					}
				} else {
					fputs($handle, 'HELO ' . getenv('SERVER_NAME') . $this->crlf);

					$reply = '';

					while ($line = fgets($handle, 515)) {
						$reply .= $line;

						if (substr($line, 3, 1) == ' ') {
							break;
						}
					}

					if (substr($reply, 0, 3) != 250) {
						error_log('Error: HELO not accepted from server!');
					}
				}

				if ($this->verp) {
					fputs($handle, 'MAIL FROM: <' . $this->from . '>XVERP' . $this->crlf);
				} else {
					fputs($handle, 'MAIL FROM: <' . $this->from . '>' . $this->crlf);
				}

				$reply = '';

				while ($line = fgets($handle, 515)) {
					$reply .= $line;

					if (substr($line, 3, 1) == ' ') {
						break;
					}
				}

				if (substr($reply, 0, 3) != 250) {
					error_log('Error: MAIL FROM not accepted from server!');
				}

				if (!is_array($this->to)) {
					fputs($handle, 'RCPT TO: <' . $this->to . '>' . $this->crlf);

					$reply = '';

					while ($line = fgets($handle, 515)) {
						$reply .= $line;

						if (substr($line, 3, 1) == ' ') {
							break;
						}
					}

					if ((substr($reply, 0, 3) != 250) && (substr($reply, 0, 3) != 251)) {
						error_log('Error: RCPT TO not accepted from server!');
					}
				} else {
					foreach ($this->to as $recipient) {
						fputs($handle, 'RCPT TO: <' . $recipient . '>' . $this->crlf);

						$reply = '';

						while ($line = fgets($handle, 515)) {
							$reply .= $line;

							if (substr($line, 3, 1) == ' ') {
								break;
							}
						}

						if ((substr($reply, 0, 3) != 250) && (substr($reply, 0, 3) != 251)) {
							error_log('Error: RCPT TO not accepted from server!');
						}
					}
				}

				fputs($handle, 'DATA' . $this->crlf);

				$reply = '';

				while ($line = fgets($handle, 515)) {
					$reply .= $line;

					if (substr($line, 3, 1) == ' ') {
						break;
					}
				}

				if (substr($reply, 0, 3) != 354) {
					error_log('Error: DATA not accepted from server!');
				}

				fputs($handle, $header . $message . $this->crlf);
				fputs($handle, '.' . $this->crlf);

				$reply = '';

				while ($line = fgets($handle, 515)) {
					$reply .= $line;

					if (substr($line, 3, 1) == ' ') {
						break;
					}
				}

				if (substr($reply, 0, 3) != 250) {
					error_log('Error: DATA not accepted from server!');
				}

				fputs($handle, 'QUIT' . $this->crlf);

				$reply = '';

				while ($line = fgets($handle, 515)) {
					$reply .= $line;

					if (substr($line, 3, 1) == ' ') {
						break;
					}
				}

				if (substr($reply, 0, 3) != 221) {
					error_log('Error: QUIT not accepted from server!');
				}

				fclose($handle);
			}
		}
	}
}
?>
3 - Contact Form : ( admin/controller/sale/contact.php )

91. Deleted

Code: Select all

$message = str_replace($value, 'cid:' . basename($filename), $message);
110. Before

Code: Select all

$mail->addAttachment($attachment['path'], $attachment['filename']);
110. After & New

Code: Select all

$mail->addAttachment($attachment['filename'], $attachment['filename']);
All Right!

Perfect Worked!

Hotmail, Gmail, Yahoo, AOL, Outlook, Outlook Express, Mozilla Thunderbird, Windows Mail, mail.mywebsite.com/mail

Working with all of them all...

Thanks All,

Newbie

Posts

Joined
Wed Jan 27, 2010 7:17 pm

Post by caag06 » Thu Dec 15, 2011 9:25 am

I have 1.5.3. version

I just use what JeffBeck35 use to mail.php and the issue was fixed. No more

Thanks JeffBeck35 for shared your knowledge with us. Very kind of you.

This is the time to thank the OpenCart team for their efforts to make this software valuable. My best wishes that your efforts result in professional and financial success.

I hope OpenCart follow the path of growth and remains a useful, practical and easy to use tool.

If I can help with my knowledge of Spanish would be a pleasure to do so.

Newbie

Posts

Joined
Fri Oct 14, 2011 12:49 am

Post by jules » Mon Jan 16, 2012 7:05 am

Thank you, JeffBeck35, for the tips on how to fix this weird email problem.
Your suggestion works wonderfully!!
- Jules.

New member

Posts

Joined
Tue May 10, 2011 3:15 am
Who is online

Users browsing this forum: No registered users and 9 guests