xp_smtp_sendmail Leerraum, der zufällig zu html hinzugefügt wird

8

Ich habe einen Proc, bei dem ich ein kleines HTML-Dokument mit einem Link erzeuge und es über xp_smtp_sendmail proc sende. Der Link wird basierend auf Abfrageergebnissen generiert und ist lang. Dies funktioniert in den meisten Fällen. Manchmal wird die Verknüpfung jedoch aufgrund von Leerzeichen unterbrochen, die in Querystring-Variablennamen eingefügt werden, d. H. & Amp; Na me = John.

Dies kann zwischen E-Mail-Clients variieren (derselbe Link funktioniert in Google Mail, funktioniert aber möglicherweise nicht in comcast aufgrund von Leerzeichen. Der Speicherplatz scheint zufällig eingefügt zu sein, sodass in jedem fehlerhaften E-Mail-Link Leerzeichen andere Querystring-Variablen beschädigen können PRINT von proc der Link ist sauber, keine Leerzeichen.

Hier ist mein Beispiel für den Mail-Prozess, der innerhalb von main proc ausgeführt wird (er erhält Abfrageergebnisse und generiert HTML für @Message). Der Platz scheint eingefügt zu sein, egal ob ich die URL kodiere oder nicht.

Vielen Dank im Voraus für Ihre Hilfe. Ich kann eine sauberere Version des Codes senden, wenn sie hier nicht korrekt angezeigt wird.

.... Abfrageergebnisse oben

%Vor%     
Igor Timofeyev 23.02.2010, 00:05
quelle

4 Antworten

1

1 - Überprüfen Sie die Länge der Nachricht, die Sie generieren, und wechseln Sie zum Senden aus einer Datei, deren Länge fast 4000 Zeichen erreicht.

2 - injizieren cr / lf Zeichen vor jedem Satz oder Absatz.

3 - Stellen Sie sicher, dass Sie cr / lf vor und nach dem Öffnen eines Tags haben (oder einfach lf, wenn das der smtp-Server ist)

4 - Sprechen Sie mit wem auch immer Sie über die Länge des eingebetteten Links zu verkürzen - es ist einfach nicht nachhaltig

5 - Fragen Sie nach Konfigurationsoptionen auf dem SMTP-Server, damit Sie E-Mails als vollständig codierte Binärdateien senden können (erfordert MIME-Header und Base64-Codierung)

6 - Suchen Sie nach einer neueren Alternative zu xp_smtp_sendmail, vielleicht einem .NET xp

    
ZXX 14.07.2010 10:56
quelle
0

Wie lang ist die Verbindung mit Werten?

Meine Vermutung ist, dass etwas Umbruch auftritt und Sie den Zeilenumbruch in ein Leerzeichen ändern lassen.

Es erscheint zufällig, weil die Werte unterschiedlich lang sind und die Aufteilung zufällig erfolgt.

Noch ein Gedanke: Sie brauchen nur <br> -Tags. <br /> wird nicht benötigt (mit oder ohne Leerzeichen) und kann dazu beitragen

    
gbn 20.03.2010 20:08
quelle
0

Wie wäre es mit der Eingabe von Wagenrücklauf in Ihre Codierung? BR wird nur "Wagen" in HTML zurückgeben, aber die Quelle selbst hat keinen Wagenrücklauf in.

    
Simon R 07.04.2010 15:55
quelle
-1

Ihr Problem ist, dass Sie mai wie eine Webseite behandeln. Mail wurde in der Zeit von Nur-Text-Konsolen erfunden und hat oft eine Zeilenlänge von 72 Zeichen. Sie müssen Ihren HTML-Code in Zeilen, die nicht länger als 72 Zeichen sind, einbinden, um sicherzustellen, dass er allen Empfängern korrekt zugestellt wird.

Verwenden Sie dazu die zitierte druckbare Codierung und umschließen Sie die Zeilen auf maximal 72 Zeichen.

Ich habe jedoch keine Ahnung, wie man das in SQL Server macht, außer dass ich eine Prozedur für den Job schreibe. Sie können den Ratschlag in der ASP FAQ .

Grundsätzlich heißt es, den Link entweder durch Tricks oder durch Verwendung von Linkkürzungsdiensten zu verkürzen.

    
jmz 25.07.2010 06:50
quelle

Tags und Links