Solved

Please help me with a Zend_Mail debugger class!

Posted on 2009-04-05
8
831 Views
Last Modified: 2013-11-10
Usage:

<?

    require("classes/class.Zend_Mail_Debugger.php");

    $mail=new Zend_Mail();
   
    $mail->addTo("nisse@sweden.net");
    $mail->setFrom("me@hotletter.com");
    $mail->setSubject("testing testing");
    $mail->setBodyHtml('
                       
        Hej! Jag är ett brev på svenska!<br>
        <br>
        (I\'m a swedish letter)<br>
        <br>
        Regards<br>
        <a href="http://www.nisses.se">Nisses.se</a>
                       
    ');
   
   
    Zend_Mail_Debugger::DumpToScreen($mail);
   
   
?>


Problem: How to make the mail readable on screen?
(see picture)

<?php
 

class Zend_Mail_Debugger{
 
 

    static function DumpToScreen(Zend_Mail $zfMail){

        

        echo "<table class='zf_mail_debug' border='1'>";

        

            echo "<tr>";
 

                echo "<th>";

                    echo "To:";

                echo "</th>";

                

                echo "<td>";

                    foreach($zfMail->getRecipients() as $r){

                        echo "$r"."; ";

                    }

                echo "</td>";

                

            echo "</tr>";
 

            echo "<tr>";

                echo "<th>";

                    echo "From:";

                echo "</th>";

                

                echo "<td>";

                    echo $zfMail->getFrom();

                echo "</td>";

            echo "</tr>";
 

            echo "<tr>";

                echo "<th>";

                    echo "Subject:";

                echo "</th>";

                                

                echo "<td>";

                    echo $zfMail->getSubject();

                echo "</td>";

            echo "</tr>";    
 

            echo "<tr>";

                echo "<th>";

                    echo "Text:";

                echo "</th>";

                                

                echo "<td>";

                    if($zfMail->getBodyHtml()){

                        echo  $zfMail->getBodyHtml(true);

                    }

                    else{

                        echo $zfMail->getBodyText();

                    }

                echo "</td>";

            echo "<tr>";                

                                                                

        

        echo "</table>";

        

        

        

    }

    

}
 

?>

Open in new window

output.png
0
Comment
Question by:davidsperling
  • 5
  • 3
8 Comments
 
LVL 49

Expert Comment

by:Roonaan
ID: 24072104
What is the sense of making it readable to screen? If you want to debug the body text, than store your mail in a variable, then use setBodyText($variable):

<?php

    require("classes/class.Zend_Mail_Debugger.php");

    $mail=new Zend_Mail();
   
    $bodyHTML = '
                       
        Hej! Jag är ett brev på svenska!<br>
        <br>
        (I\'m a swedish letter)<br>
        <br>
        Regards<br>
        <a href="http://www.nisses.se">Nisses.se</a>
                       
    ';

    $mail->addTo("nisse@sweden.net");
    $mail->setFrom("me@hotletter.com");
    $mail->setSubject("testing testing");
    $mail->setBodyHtml($bodyHTML);
   
   
    echo '<blockquote>'.$bodyHTML.'</blockquote>';
?>
0
 
LVL 4

Author Comment

by:davidsperling
ID: 24072845
The reason is that i'm using Zend_Mail like this :-)

One class for each kind of mail, that is.


http://www.experts-exchange.com/Web_Development/Web_Languages-Standards/PHP/PHP_Frameworks/Q_24275092.html
0
 
LVL 49

Accepted Solution

by:
Roonaan earned 500 total points
ID: 24074453
When you are extending the class, you could just as well use a variable, but then put it as a property of your custom object, and just write a getter;

class HT_Mail_Walk_Match_To_Proposer_Swe extends Zend_Mail{

 

        private $_customBodyText = '';

                        

        function __construct($toEmail,$toUsrName,$fromEmail,$mateAnonName,$dateTime,$link,$linkCapt){

 

                //SOLUTION:

                parent::__construct(); //set default encoding etc (iso 8859)

                

                $this->setSubject("Hej på dig!");

                $this->addTo($toEmail,$toUsrName);

                $this->setFrom($fromEmail);

 

                

                $d=new dsDate($dateTime,"swe");

                 

                $weekday=$d->getWeekDayString();

                $monthDay=$d->getCustomFormat("j");

                $month=$d->getCustomFormat("F");

                $time=$d->getTimeString_1();

                

                $this->_customBodyText = '<body>

            Hej '.$toUsrName.'!<br/>

            

            '.$mateAnonName.' secret... åla öl etc  '.$weekday.' '.$monthDay.'  '.$month.' kl. '.$time.'!<br/>

            

            

            Vänligen gå in på <a href="'.$link.'">'.$linkCapt.'</a> och tacka Ja eller Nej!<br/>

            

            

            Hälsningar<br/>

            '.$linkCapt.'<br/>

            

            </body>';
 
 

            $this->setBodyHtml($this->_customBodyText);

                

                

                

        }

        

        function getMyBodyText() {

          return $this->_customBodyText;

        }

    

    

}

Open in new window

0
 
LVL 4

Author Comment

by:davidsperling
ID: 24081070
Sweet, but then I can't dump just any Zend_Mail object to screen, can I?

There must be a way to decrypt those cryptig writings?
(se pic)
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
LVL 49

Expert Comment

by:Roonaan
ID: 24081154
You could do a forced download of a .eml file, but not sure what your browser thinks about that..
0
 
LVL 4

Author Comment

by:davidsperling
ID: 24084556
So there's no function like html_entities_decode() for this kind of encoding?

=0D=0A =0D=0A Hello!...

What's this encoding called anyway
0
 
LVL 4

Author Comment

by:davidsperling
ID: 24136022
The solution could maybe be found in Zend_Mime component...

(framework.zend.com)
0
 
LVL 4

Author Comment

by:davidsperling
ID: 24239434
Possible solution
Zend_Mime component

(framework.zend.com)

 
Haven't had the time to test. Thank's for the workarounds!
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Things That Drive Us Nuts Have you noticed the use of the reCaptcha feature at EE and other web sites?  It wants you to read and retype something that looks like this.Insanity!  It's not EE's fault - that's just the way reCaptcha works.  But it is …
This article discusses how to create an extensible mechanism for linked drop downs.
Learn how to match and substitute tagged data using PHP regular expressions. Demonstrated on Windows 7, but also applies to other operating systems. Demonstrated technique applies to PHP (all versions) and Firefox, but very similar techniques will w…
The viewer will learn how to create a basic form using some HTML5 and PHP for later processing. Set up your basic HTML file. Open your form tag and set the method and action attributes.: (CODE) Set up your first few inputs one for the name and …

914 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

22 Experts available now in Live!

Get 1:1 Help Now