English 中文(简体)
Angle brackets in php
原标题:

I want to store angle brackets in a string in PHP because i want to eventually use mail() to send an HTML email out.

The following is the code that doesn t seem to work.

while(...) {
   $msg .= "<img src="http://.../images/".$media[ Path ].""><br>";
   echo "message: ".$msg."<br>";
}

What I want is for $msg to contain a bunch of images (provided by $media[ Path ]) that are separated by line breaks. Then $msg is passed into mail().

The echo confirms that no images are being sent. And, indeed, I receive no images in the email body. Why is this happening? How can I fix it?

最佳回答

There are two ways of embedding images in an email:

  1. As external references: <img src="http://..."; and
  2. Embedded in the email.

(1) is I guess what you re trying to do. Many mail programs will (rightly) block such images as they are used by spammers to test email accounts for liveness.

It s better to do (2). See PHP Email: Using Embedded Images in HTML Email. Basically you create a multi-part MIME email (so you can attach HTML and the images) and then reference them by cid instead of a true URL. These are far less suspicious to any mail program that receives them but obviously result in bigger emails (as the image might be sent 100,000 times instead of just sending a URL).

问题回答

Have you inspected the HTML that gets echo d out? You probably have the wrong image path. Also, if you re going to be emailing that, you need to use an absolute path (http://yoursite.com/images/theimage.jpg rather than images/theimage.jpg).

Also, make sure that you have the headers set up right in the mail() function so that it gets sent as HTML instead of plaintext.

You could also use a mail wrapper such as Swiftmailer or PHPMailer which may help you with your problem. You have said that you are on a time limit though, so it may take you longer to actually convert across to using something like this.

to echo the angle brackets use:

  &lt;  //<=
  &gt;  //>=

I think php can not deal with angle brackets as it is: try the following:

$varone= one ;
$vartwo= two ;

$b=  &lt; ;
$concateOne= With Normal Brackets :  .$varone. < .$vartwo. > . <br> ;
$concateTwo= With Character Brackets :  .$varone. &lt; .$vartwo. &gt; . <br> ;

echo $concateOne;
echo  <br> ;
echo $concateTwo;
echo  <hr> ;
var_dump($concateOne);
echo  <hr> ;
var_dump($concateTwo);
echo  <hr> ;

when dumping the variable you will find that php do not store the value of the normal brackets.





相关问题
Simple JAVA: Password Verifier problem

I have a simple problem that says: A password for xyz corporation is supposed to be 6 characters long and made up of a combination of letters and digits. Write a program fragment to read in a string ...

Case insensitive comparison of strings in shell script

The == operator is used to compare two strings in shell script. However, I want to compare two strings ignoring case, how can it be done? Is there any standard command for this?

Trying to split by two delimiters and it doesn t work - C

I wrote below code to readin line by line from stdin ex. city=Boston;city=New York;city=Chicago and then split each line by ; delimiter and print each record. Then in yet another loop I try to ...

String initialization with pair of iterators

I m trying to initialize string with iterators and something like this works: ifstream fin("tmp.txt"); istream_iterator<char> in_i(fin), eos; //here eos is 1 over the end string s(in_i, ...

break a string in parts

I have a string "pc1|pc2|pc3|" I want to get each word on different line like: pc1 pc2 pc3 I need to do this in C#... any suggestions??

Quick padding of a string in Delphi

I was trying to speed up a certain routine in an application, and my profiler, AQTime, identified one method in particular as a bottleneck. The method has been with us for years, and is part of a "...

热门标签