Linked Resource image probleem

Status
Niet open voor verdere reacties.

VBMichael

Gebruiker
Lid geworden
16 jan 2010
Berichten
32
Het gaat om het volgende :

Ik ben bezig met een website waarin er de mogelijkheid is dat je, je paswoord vergeten bent er je kan kiezen om deze te laten opsturen via mail.

Dit lukt maar de layout is nog niet in orde en wil er een html document van maken met logo en dergelijke erbij van de firma maar het logo wordt niet getoond.

Waar moet ik juist beginnen zoeken om te weten waar hij vast hangt ? Of hoe het komt dat hij de foto niet weergeeft ?

Code:
string htmlcontent = "<html>\r\n";
htmlcontent += "<head>\r\n";
htmlcontent += "\t<title>Usersettings @CarXP.be</title>\r\n";
htmlcontent += "\t<meta http-equiv=\"content-type\" content= \"application/xhtml+xml; charset=UTF-8\" />\r\n";

htmlcontent += "\t<style type=\"text/css\">\r\n";				
htmlcontent += "\t</style>\r\n";
htmlcontent += "</head>\r\n";
htmlcontent += "<body>\r\n";
htmlcontent += "\t<table>\r\n";
htmlcontent += "\t\t<tr>\r\n";
htmlcontent += "\t\t\t<td><img src=\"cid:logocarxp\" alt=\"CarXP Logo\" /></td>\r\n";
htmlcontent += "\t\t</tr>\r\n";
htmlcontent += "\t\t<tr>\r\n";
htmlcontent += "\t\t\t<td>Good day " + g.Firma + ",</td>\r\n";
htmlcontent += "\t\t</tr>\r\n";
htmlcontent += "\t\t<tr>\r\n";
htmlcontent += "\t\t\t<td>\r\n";
htmlcontent += "\t\t\t\t<p>You have requested to receive your usersettings per email.</p>\r\n";

htmlcontent += "\t\t\t\t<p>You can log in into http://www.carxp.be using following settings:</p>\r\n";

htmlcontent += "\t\t\t</td>\r\n";
htmlcontent += "\t\t</tr>\r\n";
htmlcontent += "\t\t<tr>\r\n";
htmlcontent += "\t\t\t<td>\r\n";
htmlcontent += "\t\t\t\t<table>\r\n";
htmlcontent += "\t\t\t\t\t<tr>\r\n";
htmlcontent += "\t\t\t\t\t\t<td>Username : </td>\r\n";
htmlcontent += "\t\t\t\t\t\t<td>" + g.Gebruikersnaam + "</td>\r\n";
htmlcontent += "\t\t\t\t\t</tr>\r\n";
htmlcontent += "\t\t\t\t\t<tr>\r\n";
htmlcontent += "\t\t\t\t\t\t<td>Password : </td>\r\n";
htmlcontent += "\t\t\t\t\t\t<td>" + g.Wachtwoord + "</td>\r\n";
htmlcontent += "\t\t\t\t\t</tr>\r\n";
htmlcontent += "\t\t\t\t</table>\r\n";
htmlcontent += "\t\t\t</td>\r\n";
htmlcontent += "\t\t</tr>\r\n";
htmlcontent += "\t\t<tr><td><p>Sincerely,</p><p>CarXP</p></td></tr>\r\n";
htmlcontent += "\t</table>\r\n";
htmlcontent += "</body>\r\n";
htmlcontent += "</html>";
					
mm.Body = htmlcontent;
mm.IsBodyHtml = true;
mm.To.Add(new MailAddress(g.Email, g.Firma));
mm.Bcc.Add(mm.Sender);
mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
mm.Priority = MailPriority.High;
					
AlternateView htmlview = default(AlternateView);
htmlview = AlternateView.CreateAlternateViewFromString(htmlcontent, null, "text/html");
LinkedResource image = new LinkedResource("./images/logo.gif");

image.ContentId = "logocarxp";
image.TransferEncoding = System.Net.Mime.TransferEncoding.Base64;
htmlview.LinkedResources.Add(image);
mm.AlternateViews.Add(htmlview);
 
Laatst bewerkt:
Hoi,
eerst en vooral, nooit een string gebruiken om een hele brief te schrijven, dat zal enorm traag gaan. altijd een StringBuilder gebruiken (strinbuilder.Append() gebruiken om strings aan toe te voegen. (lees informatie op google ofzo: string vs stringbuilder)

Ik zal morgen nog even terug komen om het voorbeeld van een linked resource te posten. Dat heb ik nu even niet bij de hand.
grt
 
Hoi,
eerst en vooral, nooit een string gebruiken om een hele brief te schrijven, dat zal enorm traag gaan. altijd een StringBuilder gebruiken (strinbuilder.Append() gebruiken om strings aan toe te voegen. (lees informatie op google ofzo: string vs stringbuilder)

Ik zal morgen nog even terug komen om het voorbeeld van een linked resource te posten. Dat heb ik nu even niet bij de hand.
grt

Ok bedankt voor de tip al van de stringbuilder en alvast bedankt om een voorbeeld te posten van de linked resource hopelijk kan ik daarmee dan verder
 
goed dat je even opnieuw gepost hebt, eens in de werksfeer wordt dat snel vergeten :)
hier de code:

Code:
  if (showLogo) // if the company logo should be visible at the end of the mail
            {
                FileInfo logoInfo = new FileInfo(PathUtils.MapPath(@"Images\selfservicecompany.png"));
                if (logoInfo.Exists)
                {
                    //Log.Info("    Adding Logo");
                    body += "<br /><br /><br /><div><img src=cid:logo /></div>";
                    LinkedResource lr = new LinkedResource(PathUtils.MapPath(@"Images\selfservicecompany.png"));
                    lr.ContentId = "logo";
                    AlternateView av = AlternateView.CreateAlternateViewFromString(body, null, MediaTypeNames.Text.Html);
                    av.LinkedResources.Add(lr);
                    m.AlternateViews.Add(av);
                }
            }

btw: m = MailMessage
 
Laatst bewerkt:
goed dat je even opnieuw gepost hebt, eens in de werksfeer wordt dat snel vergeten :)
hier de code:

Code:
  if (showLogo) // if the company logo should be visible at the end of the mail
            {
                FileInfo logoInfo = new FileInfo(PathUtils.MapPath(@"Images\selfservicecompany.png"));
                if (logoInfo.Exists)
                {
                    //Log.Info("    Adding Logo");
                    body += "<br /><br /><br /><div><img src=cid:logo /></div>";
                    LinkedResource lr = new LinkedResource(PathUtils.MapPath(@"Images\selfservicecompany.png"));
                    lr.ContentId = "logo";
                    AlternateView av = AlternateView.CreateAlternateViewFromString(body, null, MediaTypeNames.Text.Html);
                    av.LinkedResources.Add(lr);
                    m.AlternateViews.Add(av);
                }
            }

btw: m = MailMessage

Die PathUtils is dat een zelfgeschreven methode of uit welke referentie komt dit ?
 
zelf geschreven:

Code:
public static class PathUtils
	{
		#region Properties

        /// <summary>
        /// returns the path of the application
        /// </summary>
		public static string ApplicationBasePath
		{
			get
			{
				if (HttpContext.Current != null)
				{
					return Path.Combine(HttpContext.Current.Request.PhysicalApplicationPath, "bin");
				}
				else
				{
                    //return Path.GetDirectoryName(Uri.UnescapeDataString(new Uri(Assembly.GetCallingAssembly().CodeBase).AbsolutePath));
					string result = Path.GetDirectoryName(new Uri(Assembly.GetCallingAssembly().CodeBase).LocalPath);
					return result;

				}
			}
		}

		#endregion Properties

		#region Methods

        /// <summary>
        /// returns the mappath
        /// </summary>
        /// <param name="relativePath"></param>
        /// <returns></returns>
		public static string MapPath(string relativePath)
		{
			return Path.Combine(ApplicationBasePath, relativePath);
		}

		#endregion Methods
	}
 
Mijn afbeelding blijft onzichtbaar in de mail... De foto vindt hij wel... Zou het kunnen doordat de foto een gif bestand is dat hij moeilijk doet ? Of heeft dat er niets me te zien ?
 
Geen id. neem eens een jpg?
als dat nog niet werkt, leg dan eens een link naar een online image en begin van daar uit te kijken of het wel werkt.
 
ik heb nu een nieuw visual studio 2010 project gemaakt en van daaruit een mail gestuurd met een foto in en dit werkt wel, wel is waar na dat de foto in de bin/Debug folder zat... kan dit ook de reden zijn bij websites dat deze in een speciale map moeten staan ?
 
ik zou zeggen, zet er eens een Response.WriteLine(path) tussen, dan zie je onmiddellijk of de filepath wel juist is. De methode van het toevoegen werkt 100 % zeker aangezien wij die code ook echt gebruiken.
Als je dus nu geen afbeelding ziet zal het pad niet juist zijn.

groetjes
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan