New answers tagged

0

Appearantly it all has to do with the templates body 1.15 line height. When you set this to Single all of the described errors disappear. But i am still totally puzzled why inline styles with line height set to 100% are not changing anything. I am still investigating this issue, because i want to make sure that i can have the template set to 1.15 line ...


0

We had similar issues with Outlook as well. This is what was advised by the Salesforce support: <style> /* Remove space around the email design. */ html, body { margin: 0 auto !important; padding: 0 !important; height: 100% !important; width: 100% !important; } /* Stop Outlook resizing small text. */ * { ...


0

Try adding the .outlookfix class all tags. <!--[if gte mso 9]> <style> .outlookfix{font-size: 0%;line-height: 0;} </style> <![endif]-->


0

This may be similar to the answer here about disabling WAC parameters. You can use the method described by user3274635 to Stop a link from being tracked in a Marketing Cloud email %%[ set @viewEmailUrl = view_email_url set @link = Concat('<a href="', @viewEmailUrl, '">Name of Link</a>') ]%% %%=v(@link)=%%


2

I am not sure if you missed a "not" before "working". I make the assumption that it is not working. First and foremost, the Lookup function takes 4 parameters, not 3. https://developer.salesforce.com/docs/atlas.en-us.noversion.mc-programmatic-content.meta/mc-programmatic-content/lookup.htm %%[ var @surname set @surname = lookup('test_DE_name','Column to ...


3

Take a look at the function lookup. You have a mistake at the stuff you are searching for. It cannot be Surname unless its being a value of the subscriber table. But even then i would write it differently %%[ var @surname set @surname = lookup('test_DE_name','Surname','SearchingColumn',"ValueYouWantToSearchFor" ) ]%% %%=v(@surname)=%% I guess you ...


0

It sounds like this would be a good use case for the new Scheduled Flows. You could use the flow to fetch all the items related to a Contact that have breached on the current date, and then send one email per contact with all the items.


0

You can add checkbox 'Email Sent' or something similar and restrict to only fire workflow when checkbox is deactivated.


0

I am not sure if this is something new or if it was here even back in 2014 when this question was posted, but now you can use the URLENCODE function in email templates and seems to be working ok. Related answered post can be found here: How to transfer url in email template This question should ideally be marked as duplicate


0

Here's a snippet that outlines one way to implement the solution suggested by gofestive. You would specify a DEFAULT_ORG_WIDE_ID to use as a fallback if the dynamically selected ORG WIDE email address is invalid. public static void sendFromOrgWide(Messaging.SingleEmailMessage mail, String userEmail) { // look for matching ORG wide email try { ...


0

Apex supports method overloading. You can define two versions of this method, which accept a different set of parameters. It's common for one of these versions to call through to the other, which contains the main body of the logic, while supplying default values for omitted parameters. For example, you might define these two methods: public Messaging....


0

This could be a browser-related issue. Could you refer to this article and cross-check the recommendations in resolution section ?


0

There are three avenues to get the information you're after: 1) Return Path Integration Third party paid service See the "Email Client Monitor" section within the Return Path Dashboard Summary video 2) Discover Reports in Analytics Builder Requires 'Discover' feature to be purchased and enabled on your account. Relevant Report: "Email Performance by ...


0

Sometimes Test Sends just fail to render some AMPscript from time to time. Try creating a DE with just your subscriber information and dummy data and send to this DE as a real send. Before you do the above, also try wrapping your TandCs SET variables TandCsCopy3 in double quote marks. This is because some of the contents of the copy contain single quotation ...


1

The domain or subdomain (email.company.com) used for the Sender Authentication Package needs to be exclusively used for Marketing Cloud only. You have to delegate the DNS entries to ExactTarget mail servers. In your case, you have two options that I can think of: Add john.doe as a Sender Profile and send from SFMC with john.doe@email.company.com Communicate ...


0

Run a SOQL to find out if they have emails inserted on that field or the amount of records that are under that search. List<Contact> contacts = [ SELECT Name, Recordtype.Name, Account.Name, Email FROM Contact WHERE accountid = :Accountobj.id AND RecordType.Name='abc']; System.debug(contacts.size()); Make sure that you write your query correctly. ...


5

You can't track outbound links from Cloud Pages, as they are not being redirected through the tracker domain, unlike links from emails. If you want, you can create a custom solution, where you will build your own redirect setup: Build a cloud page which will automatically redirect based on a url provided as requestparameter This cloud page should upsert ...


0

public static void DoExport() { ApexPages.PageReference rept = new ApexPages.PageReference('/00O0K00000AwUifUAF?csv=1&isdtp=p1'); List<Messaging.EmailFileAttachment> attnt = new list<Messaging.EmailFileAttachment>(); Messaging.EmailFileAttachment attnt1=new Messaging.EmailFileAttachment(); //attachment.setBody(Blob.valueof(...


0

depending on how you are sending the email (eg. javascript, Apex Callout) If you're using apex... The SingleEmailMessage has the Email class as a parent class. Therefore you can use the method setUseSignature(useSignature) as outlined in the Email Documentation. When set to false the Users signature will not be added to the email. I'm not sure if you ...


0

You can do this in multiple different ways, but let's focus on some that don't require writing SQL. First, you can navigate to the "Tracking" tab within "Email Studio", and click on the recent job (or send) that you're wanting to pull opens from. Once there, you'll find a clickable link that reads "Unique Opens." Click it, and you'll get a list of all ...


0

It is a best practice to get the query results in a list. If a query does not return any rows we get List has no rows for assignment to sobject error. What I think is your code is failing because EmailTemplate query is not returning any rows. You can update code as below : public static String ADVISOR = 'Advisor'; List<User> users = [ SELECT ...


0

The variable which you are using messageToSend is a method level variable. The first for loop also consists of the variable with same name. It is a good practice to name variables with different names. As the variables value is set in for loop level scope and not method level scope, its value is null. Therefore you are getting the error. From your code ...


1

Because it's null. The variable is declared here: String messageToSend; At declaration time, it's initialized to null. It's then shadowed in a for loop: for(AggregateResult aggr: AggregateResultList){ String messageToSend = 'Account name: ' + aggr.get('name') + ' has ' + (Integer)aggr.get('co') + ' cases opened in the last 8 days.'; ...


1

Try wrapping each of your Ampscript in HTML comments. For example, replacing: %%[ your ampscript ]%% with <!-- %%[ your ampscript ]%% --> Generally this keeps it in place better. The SFMC WYSIWYG editor can do some strange stuff at times. It's not clear where you are doing the editing here, but in my experience using the 'free form' content block ...


-2

I found that instead of attempting to access the variable from the SOQL search, I would just place them in a String that is accessible by the If/Then Statement. I created List<String> ListOfMessages = new List<String>(); and pushed each line in to List. List<AggregateResult> AggregateResultList = [SELECT AccountId, Account.Name name, ...


1

Your problem is with this line message.PlainTextBody = 'Account name: ' + cl.get('name') + ' has ' + (Integer)cl.get('co') + ' cases opened in the last 8 days.'; Specifically: cl is defined of type Case cl.get('name') // no such field Name on Case. Consult your schema for valid OOTB field names. Case happens to be one of the Sobjects that does not ...


0

I believe the issue is the following message.toAddresses = new String[] { getAddresses() }; private List<String> getAddresses() You're returning a list of email address and trying to insert it into an array as one value. That's why it's expecting a String (only one string per value in the List). Assign the returned list directly to the ...


1

the issue is message.toAddresses = new String[] { getAddresses() }; should be message.toAddresses = getAddresses(); // returns a list of email addrs


0

In what your trying, you're basically allowing anyone to send email from any Salesforce tenant, through Office 365 on behalf of your domain. Microsoft does not support email relay scenarios from shared IP space (Salesforce, Amazon, Azure etc.). Static IP address or address range: Most devices or applications are unable to use a certificate for ...


1

I'm not aware of a way to do this with the standard "send email" on case as you have no access to that email before it actually sends out. I've done this type of thing before, but I had a custom lightning component that users used to send emails from cases on which gave me complete control of the email before I sent it out in the code. This obviously adds ...


0

I tried this query to look for subscriber's opendate senddate, and clickdate by JobId and it works like charm. Select distinct s.SubscriberKey, s.JobID, s.BatchID, convert(char(19),o.EventDate,20) as OpenDate, convert(char(19),c.EventDate,20) as ClickDate, convert(char(19),s.EventDate,20) as SendDate from [_sent] s left join [_open] o on s.JobID = o.JobID ...


2

OK, I found it. You have set a @SubKey, while in the function you used @skey. Try this: %%[ VAR @SubKey, @EmailAddress, @language SET @EmailAddress = emailaddr SET @SubKey = _subscriberkey SET @language = Lookup("Account_Salesforce","Language__pc","PersonContactId",@SubKey) ]%%


1

Not 100% sure what your setup is in Salesforce. But in the views, if you need tracking on the individual email level, the views are based on SubscriberID, JobID, BatchID, and ListID (this is not an ID for a listlist, but its another field in the view that happens to be called listID) If you inner join or update your object in Salesforce based on these four ...


1

Bookmark this - it will become your best friend https://help.salesforce.com/articleView?id=mc_as_data_views.htm&type=5 Marketing Cloud uses Data Views to store information about events that have to do with email. These views are kept for a soft 90-ish days before the tracking is archived on their side (depends on how much you send and to how many users =...


0

Thank you Eliot for providing a great solution. Somehow when I include %%_RMM_ReplySubject%% to the subject line of my email, as per your example, it does duplicate the subject line in the received replied to messages. Removing the %%_RMM_ReplySubject%% from the email subject line does the trick and send replies to multiple email address with only one single ...


4

You would need to explicitly state the comparison again for proper syntax. So it would need to be: domain(Email) == "noemail.com" OR domain(Email) == "test.com"


1

Have you tried setting up your org wide emails and verifying them? I would also do a deliver-ability test and give your IT department the email IP ranges needed by all the salesforce email servers. Our IT was a bit reluctant so I got them on a call with salesforce support to explain why this was needed and the salesforce support also convinced them to go ...


0

<types> <members>object api name.email alert api name</members> <name>WorkflowAlert</name> </types> use this to deploy email alert using package.xml


Top 50 recent answers are included